У меня есть следующий 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/filename.xml» должен был завершиться неудачей; Есть сложные причины, почему это не так, в основном связанные с обратной совместимостью.
Других решений пока нет …