MSXML 解析 XML 收藏

2021-03-31 08:57:00 字數 1610 閱讀 7634

現在xml文件應用的方面特別的多.

我把以前寫過的乙個例子帖出來,以備以後使用.

第一部分:dom解析:

概述:dom解析將會把乙個完整的xml文件讀進來,生成乙個結構樹。這樣會要把xml文件全部都載入到內在中。所以解析起來的速度會要慢一些。

1、如何載入xml檔案:

//建立dom,載入xml文件

msxml::ixmldomdocumentptr p***manddoc;

p***manddoc.createinstance(__uuidof(msxml::domdocument));

p***manddoc->put_async(variant_false);

p***manddoc->put_validateonparse(variant_false);

p***manddoc->put_resolveexternals(variant_false);

p***manddoc->put_preservewhitespace(variant_true);

p***manddoc->load(file.getbuffer(0));

2、在xml文件中查詢指定的結點:

//找到

msxml::ixmldomnodeptr prootnode=p***manddoc->selectsinglenode("root/record");

if (prootnode==null)

3、得到xml文件中,結點的屬性

cstring strtemp;

prootnode->get_attributes(&pattrs);

if (pattrs==null)

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文字 二

二 實現xml解析的說明 三 xml文件物件 xml dom 模型分析 xml dom物件提供了乙個標準的方法來操作儲存在xml文件中的資訊,dom應用程式設計介面 api 用來作為應用程式和xml文件之間的橋梁。dom可以認為是乙個標準的結構體系用來連線文件和應用程式 也可以是劇本語言 msxml...

MSXML生成以及解析XML檔案

由於最近工作用到xml解析,因此看了一些關於xml的知識,找了很多範例,不過並不是那麼有效或者說可以編譯的通過。因此自己便從乙份從網上拷貝過來的 進行了修改和嘗試,中間出現的問題修改,就有了下面的一篇文章,程式 直接可以拷過去執行 基本不需要什麼修改,如果出現一些問題,看程式開始出的一點關於引入af...

XML解析之 MSXML應用總結 概念篇

一 msxml版本說明 目前共有四種msxml版本,分別為msxml3 msxml4 msxml5和msxml6。由於在微軟的windows系統中,msxml主要是用來支援瀏覽器和office的,因此這些版本多與不同瀏覽器版本及office版本相關。微軟推出ie6時帶的是msxml3,因此一般在xp...