//Include
#import "MSXML6.dll" rename_namespace(_T("MSXML"))
#include <msxml2.h>
//Read
MSXML::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();
// Write
MSXML::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();