我有以下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"的解析应该失败;它没有这样做的原因很复杂,主要与向后兼容性有关。