什么是MSXML

王朝知道·作者佚名  2009-08-11
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 電腦常識
 
問題描述:

如题~谢谢!

參考答案:

用的方面特别的多.

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

第一部分: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。

有几个函数重载了之后,当找到了结点之后,就会回调这一些函数。

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航