VC創建XML文件

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();
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章