亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

pugixml 一个支持 XPATH 的轻量级 XML 处理库

摘要

在本文中,我将解释如何使用 pugixml 处理 XML 数据。有了这个处理库,您可以使用 DOM 解析器读取和操作节点和 XPATH 查询节点的符号。

如何构建

要构建源代码,您必须从 https://github.com/zeux/pugixml/tags 下载一个版本。现在您可以使用 PLCnext 交叉编译源代码 Phoenix Contact 给出的工具链 .以下代码片段将显示 cmake script 交叉编译。


    #Please set the environment variables to your needs 

    cmake \
    -G "Unix Malkefiles" \
    -D CMAKE_BUILD_TYPE=Release \
    -D BUILD_TESTING=OFF \
    -D BUILD_SHARED_LIBS=ON \
    -D "CMAKE_STAGING_PREFIX=${CMAKE_STAGING_PREFIX}" \
    -D "CMAKE_INSTALL_PREFIX=${CMAKE_STAGING_PREFIX}" \
-D "CMAKE_TOOLCHAIN_FILE=${ARP_TOOLCHAIN_FILE}" \
-D "ARP_TOOLCHAIN_ROOT= ${ARP_TOOLCHAIN_ROOT}" \ -D BUILD_TESTS=OFF \ -S "${SOURCE_DIRECTORY}" \ -B "${BUILD_DIRECTORY}" cmake --build "${BUILD_DIRECTORY}" --target install

如何使用

首先你必须集成 C++ header 以及项目环境中的库。完成后,您可以使用 pugixml 处理。

加载文档


    pugi::xml_document doc;
    pugi::xml_parse_result result = doc.load_file("data.xml");

    ...

从给定节点遍历子节点

可以遍历DOM树,也可以操作节点。


    pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool");

    //traversing subnodes
    for (pugi::xml_node tool: tools)
    {
        std::cout << " " << tool.name();

        //getting attributes
        for (pugi::xml_attribute attr: tool.attributes())
        {
            std::cout << " " << attr.name() << "=" << attr.value();
        }
    }

使用 XPATH

XPATH 让您可以非常轻松地自由访问节点和属性。


    //accessing node
    pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool");
    pugi::xpath_node_set all_tools = doc.select_nodes("//Tool");

    //accessing attibutes
    auto docIdNode = doc.select_node("@ID");
    auto docIdNode_One = doc.select_node("//Tool[@ID==1]");

保存 XML 文档

您可以保存 XML 文档。


   doc.save_file("new_data.xml");

更多信息

如果您有兴趣了解有关 pugixml 的更多信息 您可以查看以下链接:

许可证

该库是在 MIT 许可下发布的


工业技术

  1. 带开关的电路
  2. 带科学记数法的算术
  3. 金属 3D 打印的支撑结构——更简单的方法
  4. 与工业 4.0 解决方案架构师的问答
  5. 瑞萨电子:支持 EtherCAT 的 RX72M MCU 用于工业应用
  6. 新的洗涤槽提供更快的后期处理
  7. 带有打印示例的 C++ 标准模板库 (STL) 中的映射
  8. 带有程序示例的 C 库中的 calloc() 函数
  9. C 库中的 free() 函数:如何使用?通过示例学习
  10. Python - XML 处理
  11. 如何用 CNC 加工珠宝首饰?
  12. Linq C++ 的列表处理库