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

pugixml — 支持原生 XPath 的高效 XML 解析库

摘要

本文解释如何使用 pugixml 处理 XML 数据。该处理库可使用 DOM 解析器读取和操作节点,并用 XPATH 表示法查询节点。

如何构建

构建源码需从 https://github.com/zeux/pugixml/tags 下载发布版。现可用 Phoenix Contact 提供的 PLCnext 工具链交叉编译源码。以下代码片段展示交叉编译的 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"); //遍历子节点 for (pugi::xml_node tool: tools) { std::cout << " " << tool.name(); //获取属性 for (pugi::xml_attribute attr: tool.attributes()) { std::cout << " " << attr.name() << "=" << attr.value(); } } 

使用 XPath

XPath 让您轻松访问节点和属性。

 //访问节点 pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool"); pugi::xpath_node_set all_tools = doc.select_nodes("//Tool"); //访问属性 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 License 发布


工业技术

  1. 简化金属3D打印:支撑结构管理专家技巧
  2. Almco新型清洗槽:大幅加速FDM零件支撑移除
  3. 开关控制电路实战:从原理图到面包板的基础电路构建
  4. 科学计数法乘除法精通:简化极值运算
  5. 工业4.0洞察:Bosch.IO高级解决方案架构师Verena Majuntke谈物联网、自动化与未来工厂
  6. CNC珠宝加工全攻略:从工艺到实战
  7. Linq: 现代 C++ 的强大列表处理库
  8. 瑞萨发布RX72M MCU 内置EtherCAT从站控制器 面向工业自动化
  9. C++ std::map 完全指南:键值对容器、核心操作与实战代码
  10. C 语言 calloc() 详解:零初始化动态分配原理与实战案例
  11. C 语言 free() 函数实战指南:正确释放动态内存、防泄漏与避坑全解析
  12. Python XML 处理指南:实现跨平台数据互操作