您的位置:首页 > 其它

vc使用msxml解析xml文档

2010-01-26 10:37 411 查看
vc使用msxml解析xml文档,例子代码 【字体:小 大】

vc使用msxml解析xml文档,例子代码

作者:佚名 文章来源:不详 点击数: 更新时间:2007-7-1

现在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_divserveWhiteSpace(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。

有几个函数重载了之后,当找到了结点之后,就会回调这一些函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml 文档 attributes null