c++ - pugixml 不生成任何输出

标签 c++ pugixml

我尝试使用 pugixml 将 .xml 文件读取到我的 C++ 程序中。 问题是,即使是第一个示例也行不通。

我的 .xml 看起来像这样:

<?xml version='1.0' encoding='UTF-8'?>
 <trk>
    <name bahn="Bahn 1"/>
    <trkseg>
      <trkpt lat="48.0815471" lon="11.2745363">
      </trkpt>
      <trkpt lat="48.0815471" lon="11.2745363">
      </trkpt>
    </trkseg>
  </trk>
  <trk>
    <name bahn ="Bahn 2"/>
    <trkseg>
      <trkpt lat="48.08161089580602" lon="11.274945462810345">
      </trkpt>
      <trkpt lat="48.08161089580602" lon="11.274945462810345">
      </trkpt>
    </trkseg>
  </trk>

然后我尝试使用

加载文档
pugi::xml_document doc;
pugi::xml_parse_result result = doc.load_file("kreisel_argelsriederfeld.xml");
std::cout<<"Load result: " << result.description()<<", mesh name"<< doc.child("name").attribute("bahn").value()<<std::endl;


pugi::xml_node bahnen = doc.child("trkseg");
std::cout << bahnen.value()<<std::endl;

虽然当我调用它时,输出到达 ", mesh name" 然后只显示空白。我的错误在哪里?是因为我叫错名字之类的吗?作为“加载结果”,我得到“无错误”,所以应该加载文件,不是吗?我找到了几个示例和教程,但它们都使用它来加载文件。

最佳答案

该文件不是有效的 XML(只允许一个顶级 <trk> 元素)。看这个pugixml error handling example .

如果你想拥有多个<trk>它们需要被包裹在一个单一的顶层 <trks>元素。

编辑:错过了没有错误的部分。也许 pugixml 在这里是宽容的,真正的问题是 <trk>被认为是文档节点的子节点。所以,而不是 doc.child("name")尝试 doc.child("trk").child("name") .

关于c++ - pugixml 不生成任何输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40109645/

相关文章:

c++ - 使用密集矩阵和稀疏矩阵

c++ - unordered_map(哈希表)的编译时创建也在编译时由类扩展

linux - 使用 gcc 指定目标

c++ - 在 pugi xml_node 中保存 PUGI XML 树的子树

c++ - 如何调试 msvcp100d.dll 中的崩溃

c++ - 从头开始构建一个 xml 树 - pugixml C++

c++ - 当我们有一个模板类有模板指针时,如何使用继承

c++ - 多线程环境中的全局数据行为,C++

c++ - Qt - QStackedWidget 用法

c++ - pugixml 与 tinyxml