在Visual Studio中配置pugixml并关联C++代码的方法
在Visual Studio中配置pugixml并运行你的XML解析代码
方法一:直接将pugixml源码加入项目(最简单)
- 解压你下载的pugixml包,找到核心文件:
pugixml.hpp、pugixml.cpp、pugiconfig.hpp - 打开你的Visual Studio项目,右键点击项目名称,选择「添加」→「现有项」
- 选中刚才找到的三个文件,添加到项目中
- 此时你的代码里
#include "pugixml.hpp"就能正常找到头文件,无需额外配置
方法二:配置包含目录(适合不想把源码加入项目的场景)
- 右键项目名称→「属性」
- 在属性页左侧选择「C/C++」→「常规」
- 找到「附加包含目录」,点击编辑按钮,添加pugixml头文件所在的文件夹路径(就是存放
pugixml.hpp的文件夹) - 如果使用预编译的pugixml库,还需要配置链接器:
- 左侧转到「链接器」→「常规」,在「附加库目录」添加库文件所在路径
- 再转到「链接器」→「输入」,在「附加依赖项」里添加对应的库文件名(比如Debug版本是
pugixmld.lib,Release版本是pugixml.lib)
代码优化提示
你的代码里用!= NULL判断xml_node是否有效是不规范的,因为pugixml的xml_node不是指针,它重载了operator bool,直接用节点本身作为判断条件即可,修改后的代码如下:
#include "pugixml.hpp" #include <iostream> using namespace std; int main() { pugi::xml_document doc; doc.load_file("XML.xml"); // 加载XML文件 pugi::xml_node efruit = doc.first_child().child("fruit"); // 获取根节点下的第一个fruit节点 while (efruit) { pugi::xml_node fName = efruit.child("name"); // 获取fruit下的name节点 if (fName) { cout << fName.text().get(); // 输出name的文本内容 } pugi::xml_node fColor = efruit.child("color"); // 获取fruit下的color节点 if (fColor) { cout << " " << fColor.text().get(); // 输出color的文本内容 } cout << endl; efruit = efruit.next_sibling("fruit"); // 获取下一个fruit兄弟节点 } return 0; }
额外注意事项
- 确保
XML.xml文件放在项目的输出目录下(比如Debug文件夹),或者填写完整的文件路径 - 如果编译时出现找不到pugixml相关符号的错误,说明没把
pugixml.cpp加入项目或正确链接库文件,优先用方法一解决
内容的提问来源于stack exchange,提问作者Elijah Eisenman
相关产品推荐
相关产品推荐

