zoukankan      html  css  js  c++  java
  • C++解析XML的通用库

    工作中,经常和XML打交道,最近抽空实现了一个通用解析XML的库,已归档在GitHub,详情点击:ComXmlLib。如果您无法访问GitHub,点击此处下载(链接是初版,无法和GitHub同步,如需要最新版,请移步GitHub)。

    工程是VS2012创建的,由于是初版,还未来得做优化,感兴趣的朋友可以一起维护,目前只支持utf-8格式,解析XML用的是pugixml。设置XML编码格式如下:

    <?xml version="1.0" encoding="UTF-8"?>

    然后用记事本打开,如下图改成utf-8(确保与XML声明一致):

    ComXmlLib可以获取任意一个XML节点信息,包括节点名称、子节点、父节点、兄弟节点、属性等,您也可以根据自己的需要进行扩充。

    本例抛砖引玉,希望对您有帮助!

    一个简单的例子:

    XML结构如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
        <gridctrl>
            <param column_width="10"/>
            <param column_width="10" column_height="20"/>
            <param column_width="10"/>
            <test column_width="10"/>
        </gridctrl>
        <Edit>
        </Edit>
    </root>

    获取XML整个结构:

    char* xml = "D:\GitHub\ComXmlLib\config.xml";
    const XmlConstruct::ItemPtr rootNodePtr = CXOAPI_GetNode(xml);

    获取某个节点(传入XML节点路径,路径用“|”分开):

    const XmlConstruct::ItemPtr gridctrlNodePtr = CXOAPI_GetNode(rootNodePtr,"root|gridctrl");

    获取某个值:

    std::string val = CXOAPI_GetValue(xml, "root|gridctrl|param", "column_width");
    作者:快雪
    本文版权归作者所有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    collections工具类 排序
    API text|lang
    异常处理
    extends继承
    接口
    static修饰符
    多态与find关键词
    Markdown语法
    Hexo | (五)Yilia主题优化
    Hexo | (四)多机同步更新博客
  • 原文地址:https://www.cnblogs.com/kuaixue/p/13385105.html
Copyright © 2011-2022 走看看