PugiXML空文档无错误

PugiXML empty document without error

本文关键字:无错误 文档 PugiXML      更新时间:2023-10-16

我有以下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++?

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

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