我尝试使用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/

10-08 22:04