【问题标题】:pugixml: Cannot get children/cannot iteratepugixml:无法获取孩子/无法迭代
【发布时间】:2012-10-03 19:15:22
【问题描述】:

我是第一次使用pugixml,我无法将文件正确加载到内存中。

我的 XML 测试文档:

<?xml version="1.0"?>
<node>
</node>

我使用以下代码加载文档并获取孩子:

pugi::xml_document doc;
pugi::xml_parse_result result = doc.load("test.xml");
if (result)
{
    Log(L"XML [%s] parsed without errors", L"test.xml");

    pugi::xml_node node = doc.child(L"node");
    if (node)
        Log(L"it works");
    else
        Log(L"it does not work");

    doc.save_file(L"test.xml");
}
else
{
    Log(L"XML [%s] parsed with errors", L"test.xml");
    Log(L"XML Error description: %s", result.description());
    Log(L"XML Error offset: %d", result.offset);
}

输出:

XML [test.xml] parsed without errors

it does not work

执行后的XML文件:

<?xml version="1.0"?>

(使用doc.save_file函数时数据丢失)

编译器:MS Visual Studio 2010 Ultimate

语言:C++

构建:UNICODE/x64

【问题讨论】:

    标签: xml xml-parsing pugixml


    【解决方案1】:

    您的代码不是打开文件而是解析字符串“test.xml”。 使用doc.load_file("test.xml")

    doc.load("test.xml") 没有返回任何错误,因为 pugixml 不拒绝根级 PCDATA(但也不解析它)。这不是一个理想的决定,但尚不清楚是否存在明显更好的替代方案 - 解析文档片段和解析不生成任何节点的有效片段(即 "&lt;!--comment--&gt;" 没有 pugi::parse_comments)存在复杂性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-10
      • 2017-03-01
      • 1970-01-01
      • 2015-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多