Posted on 2008-12-16 16:29
天之驕子 閱讀(424)
評論(0) 編輯 收藏 引用
(1)源XML文檔(xmlfile.xml)如下:
1
<?xml version="1.0" encoding="GB2312"?>
2
<Device id="10041" name="設備1">
3
<Type>13</Type>
4
<TypeName>保護</TypeName>
5
</Device>
我們在源文檔中查找"Device",將其"name"屬性設置為"測試設備",為其添加"Model"節點,并設置其文本為"3"。
(2)源程序如下:
1 CoInitialize(NULL); // 初始化COM。
2 CComPtr<IXMLDOMDocument> spXMLDOM;
3 HRESULT hr=spXMLDOM.CoCreateInstance (_uuidof(DOMDocument));
4 // 創建解析器實例。
5 VARIANT_BOOL bSuccess=false;
6 hr=spXMLDOM->load(CComVariant(L"xmlfile.xml"),&bSuccess);
7 // 裝載XML文檔。
8 CComBSTR bstrSS(L"Device");
9 CComPtr<IXMLDOMNode> spDevice;
10 hr=spXMLDOM->selectSingleNode(bstrSS,&spDevice); //搜索"Device"。
11 CComQIPtr<IXMLDOMElement> spDev;
12 spDev=spDevice;
13 // 設置"Device"的"name"屬性。
14 hr= spDev ->setAttribute(CComBSTR(L"name"),CComVariant("測試設備"));
15 CComPtr<IXMLDOMNode> spModelNode; hr=spXMLDOM->createNode(CComVariant(NODE_ELEMENT),ComBSTR
16 ("Model"),NULL,& spModelNode); // 創建"Model"節點。
17 CComPtr<IXMLDOMNode> spInsertedNode;
18 hr=spDevice->appendChild (spModelNode,&spInsertedNode);
19 // 添加新節點到"Device"節點下面。
20 CString strID="3";
21 hr=spInsertedNode->put_text(strID.AllocSysString());// 設置"Model"的文本。
22 hr=spXMLDOM->save(CComVariant("xmlfile.xml")); / /保存文檔。
23 CoUninitialize(); // 結束對COM的使用。
24
因為篇幅的原因,上述代碼的每步操作并未對返回的HRESULT類型進行判斷,也未進行異常的捕獲處理,在實際的編程中讀者應根據返回的hr進行決斷,以決定程序的流程,同時應進行異常的捕獲處理。
?。?) 修改后的XML文檔如下
1 <?xml version="1.0" encoding="GB2312"?>
2 <Device id="10041" name="測試設備">
3 <Type>13</Type>
4 <TypeName>保護</TypeName>
5 <Model>3</Model>
6 </Device>