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。

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

MSXML 解析XML文件

MSXML 解析XML文件  changjiang  1  wang  2 1.先要#Import 2.要添加命名空间 3.创建组件两种方式C...
  • aasmfox
  • aasmfox
  • 2015年11月18日 21:24
  • 649

使用MSXML解析XML文件

本文以如下的XML文件为例,读写这个XML文件ASKLog.xml   2007-11-28 15:23:14  Running  Finished level1 loop  (1)需要使用的头文件,...
  • xuleicsu
  • xuleicsu
  • 2007年11月28日 18:35
  • 2785

MSXML操作XML的完整例子

许多新手对MSXML如何操作XML不太了解。我下面把一些常用的操作整理成一个例子,供大家参考。假设XML文件名:test.xml   哈里波特  10  这是一本很好看的书。    三国演义  10 ...
  • cds27
  • cds27
  • 2007年04月24日 14:59
  • 7066

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

介绍 微软的msxml是基于COM接口开发的,如同vbscript和javascript一样,微软这么做是为了提供更好的扩展性。你可以在用脚本来调用msxml,也可以用C++这样编程语言一样调用(虽然...
  • mannhello
  • mannhello
  • 2011年05月16日 08:58
  • 5067

MsXml创建和解析XML示例

一.MsXml创建XML文档示例   [cpp] view plaincopyprint? // XmlCreationDemo.cpp    #include   #inc...
  • xuqiang918
  • xuqiang918
  • 2014年07月02日 17:25
  • 1154

MFC中利用MSXML解析XML文档

MFC中利用MSXML解析XML文档 一、XML 简介 XML(Xtensible Markup Language,即扩展标记语言)的发展起源于1996年。当时,出版界巨头和Web业内人士...
  • John_ToStr
  • John_ToStr
  • 2016年03月24日 11:44
  • 741

利用MSXML解析XML文本

利用MSXML解析XML文本(转) XML DOM (文档对象模型)对象提供了一个标准的方法来操作存储在XML文档中的信息,这就是DOM应用编程接口(AP...
  • wishfly
  • wishfly
  • 2007年08月02日 11:34
  • 1303

C++下通过MSXML读取XML文件内容

MSXML是微软提供的读写XML内容的开发函数库,随操作系统分发,提供的是COM接口。   引用MSXML的方式 不要采用高版本的,保证在Windows XP等低版本操作系统下运行。     ...
  • qgs20071987
  • qgs20071987
  • 2013年06月17日 15:49
  • 1446

利用MSXML.DLL解析xml文件(修正版)

利用MSXML.DLL解析xml文件。     一般情况我们装载操作xml文件,不会频繁。因此很容易忽略其中的内存泄露问题。但是如果操作不当其中的内存浪费还是令人难以容忍的。      最近做一个文件...
  • ZenKoan
  • ZenKoan
  • 2006年03月19日 16:49
  • 1556

怎么样用C++调用MSXML组件读取XML文件

运行环境为vs2005,msxml3.0 下面是我们要读取的一个XML文档text.xml. xml version="1.0" encoding="gb2312"?>xmlRoot>  ...
  • kevin3683
  • kevin3683
  • 2013年11月27日 10:09
  • 951
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MSXML 解析 XML
举报原因:
原因补充:

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