阅读背景:

msxml6 C++_chace1130的博客

来源:互联网 

 一 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.



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: