如何在C++项目中使用PugiXML统计Plan节点数量?
用PugiXML统计XML中节点的数量
针对你提供的XML结构,有两种简单的方式统计
方法一:遍历指定父节点的子节点
这种方法仅统计<Profiles>直接子节点中的<Plan>,适合明确节点层级的场景:
#include "pugixml.hpp" #include <iostream> int main() { pugi::xml_document doc; // 替换为你的XML文件路径 if (!doc.load_file("profiles.xml")) { std::cerr << "加载XML文件失败" << std::endl; return 1; } pugi::xml_node profiles_root = doc.child("Profiles"); if (!profiles_root) { std::cerr << "未找到根节点<Profiles>" << std::endl; return 1; } int plan_count = 0; // 遍历<Profiles>下所有名为Plan的子节点 for (pugi::xml_node plan : profiles_root.children("Plan")) { plan_count++; } std::cout << "Plan节点总数:" << plan_count << std::endl; return 0; }
方法二:使用XPath查询
这种方法可以统计整个XML文档中所有层级的<Plan>节点,写法更简洁:
#include "pugixml.hpp" #include <iostream> int main() { pugi::xml_document doc; if (!doc.load_file("profiles.xml")) { std::cerr << "加载XML文件失败" << std::endl; return 1; } // 用XPath匹配所有<Plan>节点 pugi::xpath_node_set plan_nodes = doc.select_nodes("//Plan"); std::cout << "Plan节点总数:" << plan_nodes.size() << std::endl; return 0; }
注意事项
- 如果你的XML中
<Plan>仅作为<Profiles>的直接子节点存在,两种方法结果一致; - 若存在嵌套的
<Plan>节点(比如某个<Plan>下还有子<Plan>),XPath方法会统计所有层级的<Plan>,而第一种方法只会统计<Profiles>的直接子节点。
内容的提问来源于stack exchange,提问作者Caglayan Dokme
相关产品推荐
相关产品推荐

