一 xml生成
#include <stdlib.h>
#include <stdio.h>
// 引入MSXML解析器
#import <msxml6.dll>
using namespace MSXML2;
int main()
{
const char *szXmlFile = "D:\china.xml"; // xml文件
MSXML2::IXMLDOMDocumentPtr pDoc = NULL; // xml文档
MSXML2::IXMLDOMProcessingInstructionPtr pProInstruction = NULL; // xml声明
MSXML2::IXMLDOMCommentPtr pComment = NULL; // 注释
MSXML2::IXMLDOMElementPtr pRootElement = NULL, pElement = NULL; // 根节点(元素)
MSXML2::IXMLDOMNodePtr pNode = NULL, pNode1 = NULL, pNode2 = NULL; // 节点
MSXML2::IXMLDOMAttributePtr pAttrNode = NULL; // 属性
HRESULT hr = pDoc.CreateInstance(__uuidof(DOMDocument60)); //
if (FAILED(hr))
{
printf("无法创建DOMDocument40对象,请检查是否安装并初始化了MsXml Parser库!");
return EXIT_FAILURE;
}
// (1)创建xml文档声明(或insertBefore根节点)
pProInstruction = pDoc->createProcessingInstruction((_bstr_t)(char*)"xml", (_bstr_t)(char*)"version=\"1.0\" encoding=\"utf-8\"");
pDoc->appendChild((MSXML2::IXMLDOMNode*)pProInstruction);
// (2)创建根节点<China>
pRootElement = pDoc->createElement((_bstr_t)(char*)"China");
pDoc->PutRefdocumentElement(pRootElement); // pXMLDomDoc->documentElement = pRootElement;
// (3)创建节点<China><Continent>
pComment = pDoc->createComment((_bstr_t)(char*)"所在的洲");
pRootElement->appendChild((MSXML2::IXMLDOMNode*)pComment); // 注释
pNode = pDoc->createNode((_variant_t)(long)MSXML2::NODE_ELEMENT, (_bstr_t)(char*)"Continent", (_bstr_t)(char*)"");
pNode->Puttext((_bstr_t)(char*)"Asia"); // pNode->text = "Asia";
pRootElement->appendChild(pNode); // 节点
// (4)创建节点<China><Population>
pComment = pDoc->createComment((_bstr_t)(char*)"人口数量");
pRootElement->appendChild((MSXML2::IXMLDOMNode*)pComment); // 注释
pElement = pDoc->createElement((_bstr_t)(char*)"Population");
pAttrNode = pDoc->createAttribute((_bstr_t)(char*)"Units");
pAttrNode->Puttext((_bstr_t)(char*)"Million Person");
pElement->setAttributeNode(pAttrNode); // 统计单位
pElement->setAttribute((_bstr_t)(char*)"StatisticalYear", (_variant_t)(char*)"2000"); // 统计年份
pElement->Puttext((_bstr_t)(char*)"1,296");
pRootElement->appendChild(pElement); // 节点
// (5)创建节点<China><Municipality>
pComment = pDoc->createComment((_bstr_t)(char*)"四个直辖市");
pRootElement->appendChild((MSXML2::IXMLDOMNode*)pComment); // 注释
pNode = pDoc->createNode((_variant_t)(long)MSXML2::NODE_ELEMENT, (_bstr_t)(char*)"Municipality", (_bstr_t)(char*)"");
pRootElement->appendChild(pNode); // 节点
// (6)创建节点<China><Municipality><TianJin>
pNode1 = pDoc->createNode((_variant_t)(long)MSXML2::NODE_ELEMENT, (_bstr_t)(char*)"TianJin", (_bstr_t)(char*)"");
// 创建节点<China><Municipality><TianJin><Area>
pElement = pDoc->createElement((_bstr_t)(char*)"Area");
pElement->setAttribute((_bstr_t)(char*)"Units", (_variant_t)(char*)"Thousand Square kilometers"); // 统计单位
pElement->Puttext((_bstr_t)(char*)"12");
pNode1->appendChild((MSXML2::IXMLDOMNode*)pElement); // 节点
// 创建节点<China><Municipality><TianJin><Population>
pElement = pDoc->createElement((_bstr_t)(char*)"Population");
pElement->setAttribute((_bstr_t)(char*)"Units", (_variant_t)(char*)"Million Person"); // 统计单位
pElement->setAttribute((_bstr_t)(char*)"StatisticalYear", (_variant_t)(char*)"2000"); // 统计年份
pElement->Puttext((_bstr_t)(char*)"10.01");
pNode1->appendChild((MSXML2::IXMLDOMNode*)pElement); // 节点
pNode->appendChild(pNode1);
// (7)创建节点<China><Municipality><BeiJing>并插入<TianJin>前
pNode2 = pDoc->createNode((_variant_t)(long)MSXML2::NODE_ELEMENT, (_bstr_t)(char*)"BeiJing", (_bstr_t)(char*)"");
// 创建节点<China><Municipality><BeiJing><Area>
pElement = pDoc->createElement((_bstr_t)(char*)"Area");
pElement->setAttribute((_bstr_t)(char*)"Units", (_variant_t)(char*)"Thousand Square kilometers"); // 统计单位
pElement->Puttext((_bstr_t)(char*)"17");
pNode2->appendChild((MSXML2::IXMLDOMNode*)pElement); // 节点
// 创建节点<China><Municipality><BeiJing><Population>
pElement = pDoc->createElement((_bstr_t)(char*)"Population");
pElement->setAttribute((_bstr_t)(char*)"Units", (_variant_t)(char*)"Million Person"); // 统计单位
pElement->setAttribute((_bstr_t)(char*)"StatisticalYear", (_variant_t)(char*)"2000"); // 统计年份
pElement->Puttext((_bstr_t)(char*)"13.82");
pNode2->appendChild((MSXML2::IXMLDOMNode*)pElement); // 节点
pNode->insertBefore(pNode2, (_variant_t)(IDispatch*)pNode1);
// (8)创建节点<China><Municipality><ShangHai>
// (9)创建节点<China><Municipality><ChongQing>
pDoc->save((_variant_t)szXmlFile);
return EXIT_SUCCESS;
}#include <stdlib.h>
#include <stdio.