PugiXML空文档没有错误

时间:2013-06-26 16:28:49

标签: c++ xml xml-parsing pugixml

我有以下XML:

<?xml version="1.0" encoding="utf-8"?>
<jack>
    <client name="Music Player Daemon">
        <port name="left">
            <connection port="jamin:in_L" />
        </port>
        <port name="right">
            <connection port="jamin:in_R" />
        </port>
    </client>
</jack>

我正在尝试使用PugiXML解析它,但在加载后我的文档为空,结果描述说没有错误:

pugi::xml_document doc;
pugi::xml_parse_result result = doc.load("/location/filename.xml");
std::cout << "Load result: " << result.description() << std::endl;

但这是一个空文档:

std::size_t numitens = std::distance(doc.begin(), doc.end());
std::cout << numitens << std::endl;

输出:

Load result: No error
0

我认为XML不是问题,对吗?

XML是由其他应用程序生成的,所以我无法更改,如果XML中存在问题,我需要更改XML解析器吗? TinyXML还是libxml ++?

1 个答案:

答案 0 :(得分:1)

doc.load()加载字符串,而不是文件。您必须使用doc.load_file()

理想情况下,解析字符串“/location/filename.xml”应该失败;它没有复杂的原因,主要与向后兼容性有关。