用微軟的解析,用的 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.結束。