【第22期】观点:IT 行业加班,到底有没有价值?

MSXML 解析 XML

转载 2006年06月14日 00:04:00

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

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

举报

相关文章推荐

VC使用MSXML解析XML文档

VC使用MSXML解析XML文档 http://blog.csdn.net/byxdaz/article/details/666688 第一部分:DOM解析:       概述:DOM解...

XML 解析器之一 :MSXML使用教程(转)

介绍 微软的msxml是基于COM接口开发的,如同vbscript和javascript一样,微软这么做是为了提供更好的扩展性。你可以在用脚本来调用msxml,也可以用C++这样编程语言一样调用(虽然这么使用是非常烦的)。 这篇文章算是一个总结吧,我自己msxml也用的不熟,说心里话,我宁愿选择使用expat、tinyxml,而不是msxml,COM接口库很烦,为了得到一个节点的属性,你不得不首先获得一个属性集,然后再得到所要的节点,在调用get_text才能得到其值。而且特别是接口指针的释放,我做了个实验,当不释放IXMLDOMN
  • isiqi
  • isiqi
  • 2011-05-16 08:58
  • 1214

VC使用MSXML解析XML文档,例子代码

现在XML文档应用的方面特别的多.我把以前写过的一个例子帖出来,以备以后使用.第一部分:DOM解析:      概述:DOM解析将会把一个完整的XML文档读进来,生成一个结构树。这样会要把XML文档全...

XML中DOM解析问题:Msxml2.DOMDocument.4.0 报错

今天看&lt;XML实用教程&gt;的第9章 XML DOM 写例子时报错, Msxml2.DOMDocument.4.0出错;无法创建这个对象.运行了书上的例子,也不行.比较郁闷. 后来一看,原来我用的是系统是WinXP,书上是Win2K......... 在winxp中要这样创建: <div style="padding-right: 5.4pt; padding-left: 5.4pt; background: #e6e6e6; padding-bottom: 4px; width: 95%; padding-top: 4p

利用VC++与MSXML解析XML文档

http://www.xml.org.cn/dispbbs.asp?boardID=11&ID=23546一、文档对象模型(DOM)  DOM是Document Object Model(文档对象模型...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)