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
的更多信息 您可以查看以下链接:
- GitHub:https://github.com/zeux/pugixml
- 网站:https://pugixml.org/
许可证
该库是在 MIT 许可下发布的
工业技术