XML文件清晰,通用性強。以下代碼在VS2008下調試通過。
//包括msxml頭文件
#include <msxml6.h>
//引入msxml動態鏈接庫
#pragma comment(lib,"comsuppwd.lib")
//創建XML文件
void PublicParseXML::CreateXML(CString strFileName)
{
CoInitialize(NULL);
CComPtr<IXMLDOMDocument> pXmlDoc;
CComPtr<IXMLDOMProcessingInstruction> pXmlProInstruction;
CComPtr<IXMLDOMElement> pXmlRoot;
CComPtr<IXMLDOMComment> pXmlComment;
CComPtr<IXMLDOMElement> pXmlPage_1;
CComPtr<IXMLDOMElement> pXmlPage_2;
CComPtr<IXMLDOMElement> pXmlCtrl_1;
CComPtr<IXMLDOMElement> pXmlCtrl_2;
HRESULT hr = pXmlDoc.CoCreateInstance(_uuidof(DOMDocument));
if(!SUCCEEDED(hr))
{
AfxMessageBox("創建DOMDocument對象失敗");
return;
}
//屬性設置
/*pXmlDoc->put_preserveWhiteSpace(VARIANT_TRUE);
pXmlDoc->put_async(VARIANT_FALSE);
pXmlDoc->put_validateOnParse(VARIANT_FALSE);
pXmlDoc->put_resolveExternals(VARIANT_FALSE);*/
//添加xml說明
pXmlDoc->createProcessingInstruction(OLESTR("xml"), OLESTR("version=\"1.0\" encoding=\"utf-8\""), &pXmlProInstruction);
pXmlDoc->appendChild(pXmlProInstruction, NULL);
//創建添加根節點
pXmlDoc->createElement(OLESTR("Root"), &pXmlRoot);
pXmlDoc->appendChild(pXmlRoot, NULL);
//添加根結點屬性
pXmlRoot->setAttribute(OLESTR("type"), CComVariant(OLESTR("wxp")));
//添加註釋
pXmlDoc->createComment(OLESTR("this is a test"), &pXmlComment);
pXmlRoot->appendChild(pXmlComment, NULL);
//創建node1
pXmlDoc->createElement(OLESTR("test1"), &pXmlCtrl_1);
//設置節點屬性
pXmlCtrl_1->setAttribute(OLESTR("type"), CComVariant(OLESTR("txt11")));
pXmlCtrl_1->setAttribute(OLESTR("name"), CComVariant(OLESTR("gsy11")));
//設置節點內容
pXmlCtrl_1->put_text(OLESTR("test1_value11"));
pXmlRoot->appendChild(pXmlCtrl_1, NULL);
//創建node2
pXmlDoc->createElement(OLESTR("test2"), &pXmlCtrl_2);
pXmlCtrl_2->setAttribute(OLESTR("type"), CComVariant(OLESTR("txt22")));
pXmlCtrl_2->setAttribute(OLESTR("name"), CComVariant(OLESTR("ttt22")));
//pXmlCtrl_2->put_text(OLESTR("test2_value22"));
pXmlRoot->appendChild(pXmlCtrl_2, NULL);
//創建孩子的孩子
pXmlDoc->createElement(OLESTR("child"), &pXmlCtrl_1);
pXmlCtrl_1->setAttribute(OLESTR("type"), CComVariant(OLESTR("txt22")));
pXmlCtrl_1->setAttribute(OLESTR("name"), CComVariant(OLESTR("ttt22")));
pXmlCtrl_1->put_text(OLESTR("child"));
pXmlCtrl_2->appendChild(pXmlCtrl_1, NULL);
//創建屬性
//pXmlDoc->createAttribute(OLESTR("type"), &pXmlAttr_1);
//pXmlAttr_1->put_value(CComVariant(OLESTR("txt")));
//保存爲xml
pXmlDoc->save(CComVariant(OLESTR("test.xml")));
CoUninitialize();
}