MFC寫XML檔案 以及 刪除節點

來源:互聯網
上載者:User

轉自:http://bbs.csdn.net/topics/300026982

包含庫檔案不變:#import "msxml3.dll"

命名空間不變:using namespace MSXML2;

範例程式碼如下:

//初始化

CoInitialize(NULL);
// 建立文檔
MSXML2::IXMLDOMDocument2Ptr pXMLDoc = NULL;
pXMLDoc.CreateInstance("Msxml2.DOMDocument.3.0");
// Create the Processing Instruction
MSXML2::IXMLDOMProcessingInstructionPtr pXMLProc = NULL;
pXMLProc = pXMLDoc->createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
// Insert the Processing Instruction
_variant_t vNullVal;
vNullVal.vt = VT_NULL;
pXMLDoc->insertBefore(pXMLProc, vNullVal);
// 建立根結點
_variant_t varNodeType((short)MSXML2::NODE_ELEMENT);
MSXML2::IXMLDOMNodePtr pXMLNodeRoot= NULL; 
pXMLNodeRoot = pXMLDoc->createNode(varNodeType, _T("Root"), _T(""));
// 添加根結點
pXMLDoc->appendChild(pXMLNodeRoot);
// 建立並添加下級結點
MSXML2::IXMLDOMNodePtr pXMLNodeNode= NULL; 
pXMLNodeNode = pXMLNodeRoot->appendChild(pXMLDoc->createElement(_T("Node1")));
pXMLNodeNode = pXMLNodeRoot->appendChild(pXMLDoc->createElement(_T("Node2")));
// 建立並設定下級結點屬性(3個:姓名、性別、年齡)
MSXML2::IXMLDOMAttributePtr pXMLAttr = NULL;
pXMLAttr = pXMLDoc->createAttribute(_T("name"));
pXMLAttr->nodeTypedValue = "王進";
pXMLNodeNode->attributes->setNamedItem(pXMLAttr);
pXMLAttr = pXMLDoc->createAttribute(_T("sex"));
pXMLAttr->nodeTypedValue = "男";
pXMLNodeNode->attributes->setNamedItem(pXMLAttr);
pXMLAttr = pXMLDoc->createAttribute(_T("age"));
pXMLAttr->nodeTypedValue = "80";
pXMLNodeNode->attributes->setNamedItem(pXMLAttr);
// 建立下級元素結點
MSXML2::IXMLDOMElementPtr pXMLEle = NULL;
pXMLEle = pXMLDoc->createElement(_T("file"));
pXMLEle->appendChild(pXMLDoc->createTextNode("Element"));
// 添加元素結點
pXMLNodeNode->appendChild( pXMLEle );
/*
// 建立下級元素結點
MSXML2::IXMLDOMElementPtr pXMLEleSub = NULL;
pXMLEleSub = pXMLDoc->createElement(_T("file"));
pXMLEleSub->appendChild(pXMLDoc->createTextNode("SubElement"));
// 添加下級元素結點
pXMLEle->appendChild( pXMLEleSub );
*/
// 儲存文檔
pXMLDoc->save(_T("d:\\Test.xml"));

CoUninitialize();

 

總結:當節點下無元素時,節點不會展開

 

 刪除節點:

pNodeList->get_item(i,&pNode);
pNod->removeChild(pNode,&moldNode);
moldNode->Release();

自己在IniToXml工程中使用時發現removeChild函數只接收一個參數:即pNode

此外:當從某個index開始刪除之後所有的節點時,get_item(i,&pNode)中的 i 不能是遞增的,因為每刪掉一個節點,就會有之後的節點移到前面來。






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.