MSXML各種糾結問題

用微軟的解析,用的 30的document,修改節點和查詢節點:

 

首先SUCCEEDED(pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30) 創建,加載文檔

有了文檔,就可以獲取節點了。

用getElementsByTagName可以獲取所有同名的標籤節點,有點效率小問題,畢竟要查找節點才能找到名字,

一般就是一層層往下找。可以先獲取  pDoc->get_documentElement(&pRoot); 根節點,然後從根節點出發查找指定的節點,並查找屬性。

 

可以selectnodes獲取同名的列表,獲取長度之後,循環遍歷。

每個節點會有子節點,GetfirstChild,每個子節點的兄弟節點GetnextSibling,節點名字和值之類的可以直接獲取了,

節點屬性值 pNameNMP = pNx->Getattributes();MSXML2::IXMLDOMNamedNodeMapPtr pNameNMP

要獲得有名節點映射表,之後,可以用length來獲取有幾個屬性值。Getitem可以遍歷所有屬性節點,這些節點的值可以獲取了

,然後修改節點屬性值l

MSXML2::IXMLDOMElementPtr( pNx )->setAttribute(_bstr_t(_T("connectionString")),varT)

把之前獲得到的節點拿出來(就是屬性節點的上一層或者父節點)就可以設置屬性值了。

 

現在來說一下問題。

1:主要是設置屬性一直沒正確,調試了N次後發現就結的catch塊…………出錯了,就沒保存修改。

2:一個算是小BUG的玩意吧,VARIANT變量的糾結命名啊,在vt_Bstr 在 <tag   attr = value> </tag>這個模式下可以設置值,但是在

  <tag attr = value />在這個模式下就是悲劇,不能賦值。一直是空,後來用_bstr_t重新命名變量,這個類是從 VARIANT繼承來的玩意,

(用的wlt),重新命名後再調用setAttribute後就沒這些問題了。建議變量以後按照函數的定義形式來,強制裝換有時候也會有出問題的的時候。

3.結束。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章