pugixml 简介
pugixml 是一个非常经典且优秀的 C++ XML 处理库,适合用来学习项目结构和编写高效代码。它采用 MIT 许可证,允许在商业项目中自由使用、修改和分发。
核心特性
- DOM-like 接口:提供直观的方式来遍历、修改 XML 文档树。
- 极高的解析速度:非验证性 XML 解析器性能出色,适合性能敏感的场景。
- XPath 支持:内置了 XPath 1.0 的实现,可以执行复杂的数据查询。
- Unicode 支持:完美支持多种 Unicode 编码,并能自动处理编码转换。
由于其高效和易用的特性,它被广泛应用于各种项目中,例如 3D 模型导入库 Assimp、部分 Qt 模块,以及许多自定义的游戏引擎和工具链中。
环境配置
编译时需要包含以下头文件和库文件:
- 头文件:
pugiconfig.hpp,pugixml.hpp - 库文件:
pugixml.lib(Windows) /libpugixml.a(Linux/macOS)
代码示例
1. 加载与遍历
从文件加载 XML 并遍历所有节点。
#include <iostream>
#include "pugixml/pugixml.hpp"
int traverse_base() {
pugi::xml_document doc;
// 替换为实际存在的文件路径
if (!doc.load_file("config.xml")) return -1;
pugi::xml_node tools = doc.child("Profile").child("Tools");
for (pugi::xml_node tool = tools.first_child(); tool; tool = tool.next_sibling()) {
std::cout << "Tool:";
for (pugi::xml_attribute attr = tool.first_attribute(); attr; attr = attr.next_attribute()) {
std::cout << " " << attr.name() << << attr.();
}
std::cout << std::endl;
}
;
}

