【问题标题】:pugixml generates no outputpugixml 不生成任何输出
【发布时间】:2016-10-18 13:28:24
【问题描述】:

我尝试使用 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",然后只显示空白空间。我的错误在哪里?是因为我叫错了名字或类似的东西吗?作为“加载结果”,我得到“无错误”,所以应该加载文件,不是吗?我找到了几个示例和教程,但它们都使用它来加载文件。

【问题讨论】:

    标签: c++ pugixml


    【解决方案1】:

    该文件不是有效的 XML(只允许使用一个顶级 &lt;trk&gt; 元素)。请参阅此pugixml error handling example。

    如果您想拥有多个 &lt;trk&gt;,则需要将它们包装在一个顶级 &lt;trks&gt; 元素中。

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

    【讨论】:

    • 您的编辑是正确的 - pugixml 可以容忍多个根级元素(这非常常见),但文档对象是一个单独的节点。
    猜你喜欢
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多