// ConsoleApplication1.cpp : 定義控制台應用程式的入口點。
//
#include "stdafx.h"
#include <comutil.h>
#include <iostream>
#include <MsXml6.h>
#pragma comment(lib, "comsuppw.lib")
#pragma comment(lib, "msxml6.lib")
using namespace std;
void CreateXMLFile(IXMLDOMDocument *pXMLDoc);
int _tmain(int argc, _TCHAR* argv[])
{
// 初始化COM
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
if (FAILED(hr))
return 1;
// 創建XML文檔對象
IXMLDOMDocument *pXMLDoc;
hr = CoCreateInstance(CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pXMLDoc));
if (SUCCEEDED(hr))
{
CreateXMLFile(pXMLDoc);
pXMLDoc->Release();
}
else
cout << "創建XMLDOMDocument對象失敗" << endl;
CoUninitialize();
system("pause");
return 0;
}
void CreateXMLFile(IXMLDOMDocument *pXMLDoc)
{
/* 在文檔中創建XML聲明 */
IXMLDOMProcessingInstruction *pProInstruction;
pXMLDoc->createProcessingInstruction(L"xml", L"version=\"1.0\" encoding=\"utf-8\"", &pProInstruction);
pXMLDoc->appendChild(pProInstruction, NULL);
pProInstruction->Release();
/* 在文檔中創建根節點<book> */
IXMLDOMElement *pBookElement;
pXMLDoc->createElement(L"book", &pBookElement);
pXMLDoc->appendChild(pBookElement, NULL); // 把根節點加入到文檔中
/* 給根節點<book>添加id屬性*/
pBookElement->setAttribute(L"id", variant_t(448));
/* 給根節點<book>添加子節點<name>和<price> */
IXMLDOMElement *pBookNameElement;
IXMLDOMElement *pBookPriceElement;
pXMLDoc->createElement(L"name", &pBookNameElement);
pXMLDoc->createElement(L"price", &pBookPriceElement);
pBookNameElement->put_text(L"JavaScript開發技術大全");
pBookPriceElement->put_text(L"$65");
pBookElement->appendChild(pBookNameElement, NULL);
pBookElement->appendChild(pBookPriceElement, NULL);
pBookNameElement->Release();
pBookPriceElement->Release();
pBookElement->Release();
/* 保存XML文件 */
HRESULT hr = pXMLDoc->save(variant_t("file.xml"));
if (FAILED(hr))
cout << "XML文件保存失敗" << endl;
}