c++读写xml方法

来源:互联网 发布:宾馆 网络布线收费 编辑:程序博客网 时间:2024/06/15 08:04
//Include#import "MSXML6.dll" rename_namespace(_T("MSXML"))#include <msxml2.h>//ReadMSXML::IXMLDOMDocumentPtr pXMLDoc;    HRESULT hr = pXMLDoc.CreateInstance(__uuidof(DOMDocument30));if (FAILED(hr)){    ...}pXMLDoc->async = VARIANT_FALSE;if (pXMLDoc->load(m_strFile.GetBuffer()) == VARIANT_FALSE){    pXMLDoc.Release();}CString strText;MSXML::IXMLDOMNodePtr pParentNode = NULL;MSXML::IXMLDOMNodePtr pChildNode = NULL;MSXML::IXMLDOMNamedNodeMapPtr pNamedNodeMap= NULL;MSXML::IXMLDOMNodePtr pAttribNode= NULL; pParentNode = pXMLDoc->selectSingleNode(_T("Parent"));if (pParentNode != NULL){     pChildNode = pParentNode->selectSingleNode(_T("Child0"));     if (pChildNode != NULL)     {         pNamedNodeMap = pChildNode->attributes;         if (pNamedNodeMap != NULL)         {            pAttribNode = pNamedNodeMap->getNamedItem(_T("attribute0"));            if (pAttribNode != NULL)            {               strText = (LPCTSTR)pAttribNode->text;               ...;             }            pAttribNode = pNamedNodeMap->getNamedItem(_T("attribute1"));            if (pAttribNode != NULL)             {                  ...             }          }      }      pChildNode = pParentNode->selectSingleNode(_T("Child1"));      if (pChildNode != NULL)      {          ...      }}pXMLDoc.Release();// WriteMSXML::IXMLDOMDocumentPtr pXMLDoc;    HRESULT hr = pXMLDoc.CreateInstance(__uuidof(DOMDocument30));if (FAILED(hr)){    return FALSE;}pXMLDoc->async = VARIANT_FALSE;if(pXMLDoc->loadXML(_T("<xxx></xxx>")) == VARIANT_FALSE){    pXMLDoc.Release();    return FALSE;}MSXML::IXMLDOMElementPtr pXMLRootElem = pXMLDoc->GetdocumentElement();MSXML::IXMLDOMProcessingInstructionPtr pXMLProcessingNode = pXMLDoc->createProcessingInstruction("xml", " version='1.0' encoding='UTF-16'");_variant_t vtObject;vtObject.vt = VT_DISPATCH;vtObject.pdispVal = pXMLRootElem;vtObject.pdispVal->AddRef();pXMLDoc->insertBefore(pXMLProcessingNode,vtObject);CString strText;MSXML::IXMLDOMElementPtr pXMLChild = NULL; MSXML::IXMLDOMElementPtr pXMLParent = pXMLDoc->createElement(_T("Parent"));pXMLParent  = pXMLRootElem->appendChild(pXMLParent);        pXMLChild = pXMLDoc->createElement(_T("Child0"));strText = xxx;pXMLChild->setAttribute(_T("attribute0"),(LPCTSTR)strText);strText = yyy;pXMLChild->setAttribute(_T("attribute1"),(LPCTSTR)strText);pXMLChild = pXMLParent->appendChild(pXMLChild);pXMLChild = pXMLDoc->createElement(_T("Child1"));strText = xxx;pXMLChild->setAttribute(_T("attribute0"),(LPCTSTR)strText);strText = yyy;pXMLChild->setAttribute(_T("attribute1"),(LPCTSTR)strText);pXMLChild = pXMLParent->appendChild(pXMLChild);  ...hr = pXMLDoc->save(m_strFile.GetBuffer());if (FAILED(hr)){    ...}        pXMLDoc.Release();


原创粉丝点击