未知昵称 2018-11-07 03:17 采纳率: 50%
浏览 1722
已采纳

C++使用msxml解析XML文件

 <?xml version="1.0" encoding="utf-8"?>
<AUTOSAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://autosar.org/schema/r4.0"  xsi:schemaLocation="http://autosar.org/schema/r4.0 AUTOSAR_00042.xsd">
    <ADMIN-DATA>
        <LANGUAGE>EN</LANGUAGE>
        <USED-LANGUAGES>
            <L-10 L="EN"/>
        </USED-LANGUAGES>
    </ADMIN-DATA>
    <AR-PACKAGES>
        <AR-PACKAGE>
            <SHORT-NAME>DataTypes</SHORT-NAME>
            <AR-PACKAGES>
                <AR-PACKAGE>
                    <SHORT-NAME>BaseTypes</SHORT-NAME>
                    <ELEMENTS>
                        <SW-BASE-TYPE>
                            <SHORT-NAME>boolean</SHORT-NAME>
                            <CATEGORY>FIXED_LENGTH</CATEGORY>
                            <BASE-TYPE-SIZE>8</BASE-TYPE-SIZE>
                            <MAX-BASE-TYPE-SIZE>0</MAX-BASE-TYPE-SIZE>
                            <BASE-TYPE-ENCODING>NONE</BASE-TYPE-ENCODING>
                            <MEM-ALIGNMENT>0</MEM-ALIGNMENT>
                            <NATIVE-DECLARATION>boolean</NATIVE-DECLARATION>
                        </SW-BASE-TYPE>
                        <SW-BASE-TYPE>
                            <SHORT-NAME>uint8</SHORT-NAME>
                            <CATEGORY>FIXED_LENGTH</CATEGORY>
                            <BASE-TYPE-SIZE>8</BASE-TYPE-SIZE>
                            <MAX-BASE-TYPE-SIZE>0</MAX-BASE-TYPE-SIZE>
                            <BASE-TYPE-ENCODING>NONE</BASE-TYPE-ENCODING>
                            <MEM-ALIGNMENT>0</MEM-ALIGNMENT>
                            <NATIVE-DECLARATION>uint8</NATIVE-DECLARATION>
                        </SW-BASE-TYPE>
                        <SW-BASE-TYPE>
                            <SHORT-NAME>uint16</SHORT-NAME>
                            <CATEGORY>FIXED_LENGTH</CATEGORY>
                            <BASE-TYPE-SIZE>16</BASE-TYPE-SIZE>
                            <MAX-BASE-TYPE-SIZE>0</MAX-BASE-TYPE-SIZE>
                            <BASE-TYPE-ENCODING>NONE</BASE-TYPE-ENCODING>
                            <MEM-ALIGNMENT>0</MEM-ALIGNMENT>
                            <NATIVE-DECLARATION>uint16</NATIVE-DECLARATION>
                        </SW-BASE-TYPE>
                        <SW-BASE-TYPE>
                            <SHORT-NAME>uint32</SHORT-NAME>
                            <CATEGORY>FIXED_LENGTH</CATEGORY>
                            <BASE-TYPE-SIZE>32</BASE-TYPE-SIZE>
                            <MAX-BASE-TYPE-SIZE>0</MAX-BASE-TYPE-SIZE>
                            <BASE-TYPE-ENCODING>NONE</BASE-TYPE-ENCODING>
                            <MEM-ALIGNMENT>0</MEM-ALIGNMENT>
                            <NATIVE-DECLARATION>uint32</NATIVE-DECLARATION>
                        </SW-BASE-TYPE>
                    </ELEMENTS>
                </AR-PACKAGE>
            </AR-PACKAGES>
        </AR-PACKAGE>
    </AR-PACKAGES>
</AUTOSAR>

如上所示,一段xml文件,现在想要用msxml解析这段XML文件,

现在想要获取ELEMENTS下,所有SW-BASE-TYPE内所有子节点的内容集合,

msxml库简单介绍

  • 写回答

2条回答 默认 最新

  • dabocaiqq 2018-11-07 03:26
    关注

    #include "stdafx.h"
    #include

    using namespace std;

    #import
    using namespace MSXML2;

    int ReadXMLFile()
    {
    CoInitialize(NULL);

    char *xmlFile = "student.xml";
    MSXML2::IXMLDOMDocumentPtr pdoc = NULL;
    MSXML2::IXMLDOMNodeListPtr pnodeList = NULL;
    MSXML2::IXMLDOMElementPtr prootElement = NULL;
    MSXML2::IXMLDOMNodePtr pnode = NULL;
    MSXML2::IXMLDOMNamedNodeMapPtr pattrList = NULL;
    MSXML2::IXMLDOMAttributePtr pattrNode = NULL;

    HRESULT hr = pdoc.CreateInstance(__uuidof(DOMDocument60));
    if(FAILED(hr))
    {
    printf("无法创建DOMDocument60对象!");
    return EXIT_FAILURE;
    }

    VARIANT_BOOL xmlLoad = pdoc->load((_variant_t)xmlFile);
    //加载失败
    if(!xmlLoad)
    {
    printf("加载%s失败!\n", xmlFile);
    return EXIT_FAILURE;
    }

    prootElement = pdoc->GetdocumentElement();
    cout<< (char*)prootElement->GetnodeName() <<endl;

    CoUninitialize();

    return 0;
    }

    int _tmain(int argc, _TCHAR* argv[])
    {
    ReadXMLFile();
    getchar();
    return 0;
    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 有卷积神经网络识别害虫的项目吗
  • ¥15 数据库数据成问号了,前台查询正常,数据库查询是?号
  • ¥15 算法使用了tf-idf,用手肘图确定k值确定不了,第四轮廓系数又太小才有0.006088746097507285,如何解决?(相关搜索:数据处理)
  • ¥15 彩灯控制电路,会的加我QQ1482956179
  • ¥200 相机拍直接转存到电脑上 立拍立穿无线局域网传
  • ¥15 (关键词-电路设计)
  • ¥15 如何解决MIPS计算是否溢出
  • ¥15 vue中我代理了iframe,iframe却走的是路由,没有显示该显示的网站,这个该如何处理
  • ¥15 操作系统相关算法中while();的含义
  • ¥15 CNVcaller安装后无法找到文件