You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 04:21:20