您的当前位置:我要购书网>在线阅读>VC++/C#/C

msxml 解析 xml(收藏)

来源:互联网  作者:我要购书网信息中心  发布:我要购物网收集整理  发布时间:2006-8-31 人气:154

现在XML文档应用的方面特别的多.


我把以前写过的一个例子帖出来,以备以后使用.


第一部分:DOM解析:


概述:DOM解析将会把一个完整的XML文档读进来,生成一个结构树。这样会要把XML文档全部都加载到内在中。所以解析起来的速度会要慢一些。



1、如何加载xml文件:

//创建DOM,加载XML文档
MSXML::IXMLDOMDocumentPtr pCommandDoc;
pCommandDoc.CreateInstance(__uuidof(MSXML::DOMDocument));
pCommandDoc->put_async(VARIANT_FALSE);
pCommandDoc->put_validateOnParse(VARIANT_FALSE);
pCommandDoc->put_resolveExternals(VARIANT_FALSE);
pCommandDoc->put_preserveWhiteSpace(VARIANT_TRUE);
pCommandDoc->load(file.GetBuffer(0));

2、在XML文档中查找指定的结点:

//找到
MSXML::IXMLDOMNodePtr pRootNode=pCommandDoc->selectSingleNode("root/record");
if (pRootNode==NULL)
{
return ;
}

3、得到XML文档中,结点的属性

CString strTemp;
MSXML::IXMLDOMNamedNodeMapPtr pAttrs = NULL;
pRootNode->get_attributes(&pAttrs);
if (pAttrs==NULL)
{
return;
}
MSXML::IXMLDOMNodePtr pRequestTypeAttr=pAttrs->getQualifiedItem("name","");
_bstr_t strRequestType=pRequestTypeAttr->Gettext();
strTemp=strRequestType.operator char *();

4、得到结点的内容

_bstr_t strVisiPort=pNode->Gettext();

5、设置结点的内容

HRESULT hr=pNode->put_text(_bstr_t(m_strGatewayPassword));


6、设置一个属性内容
IXMLDOMAttribute *pa=NULL;
bstr = SysAllocString(L"属性1");
pXMLDom->createAttribute(bstr,&pNode);
var = VariantString(L"strin");
pa->put_value(var);
pRoot->setAttributeNode(pa, &pa1);


第二部分、如何使用SAX解析

概述:SAX使用的是加载式的,将会把XML文档分断,加载到内存中。使用事件通知的方式,来表示找到结点。好像没有写文档的能力吧。它的速度要比DOM快不少。

使用SAX的时候,就需要重载MSXML4.0中的一个接口ISAXContentHandler。

有几个函数重载了之后,当找到了结点之后,就会回调这一些函数。
相关文章
· ms-sql数据库开发常用汇总
· mscomm控件属性大揭秘
· msflexgrid使用技巧一例
· mshflexgrid 控件的应用
· ms agent 经典用法
· msdn datagrid嵌套datalist (sau..
· mssql中时间查询的一个比较快的语句。
· msn / qq 中的动画表情 在delphi中rich..
· msxml 解析 xml(收藏)
· msdn里关于winmain的描述
热点文章
%>
· creating user controls
· 提高fastreplace速度 (fstrrep.pas)
· asc ii 完整码表及简介
· 自动生成拼音(汉字反查到拼音)
· sql2000无法安装的解决办法
· 浏览器集成教学 自定义浏览器
· vc++技术内幕(第四版)笔记(第7章)
· mysql5.0中文乱码解决方案
· sql server日期计算
· vc下利用ado连接access数据库
 淘宝旺旺:我要购书网上书店『图书目录
本购书中心地址: 杭州市延安路111号清波商厦南楼D座(总部) 上海市闸北区老沪太路网上购书中心(沪部),  邮编:310002
电子邮件:books@51goushu.com  经营许可证编号:沪ICP备06038574号
版权所有 2003-2008 © All Rights Reserved .购书网