2016-10-18 4 views
0

Я пытаюсь прочитать XML-файл для моей программы на C++ с помощью pugixml. Проблема в том, что даже не первый пример работает.pugixml не производит вывод

Мой .xml выглядит следующим образом:

<?xml version='1.0' encoding='UTF-8'?> 
<trk> 
    <name bahn="Bahn 1"/> 
    <trkseg> 
     <trkpt lat="48.0815471" lon="11.2745363"> 
     </trkpt> 
     <trkpt lat="48.0815471" lon="11.2745363"> 
     </trkpt> 
    </trkseg> 
    </trk> 
    <trk> 
    <name bahn ="Bahn 2"/> 
    <trkseg> 
     <trkpt lat="48.08161089580602" lon="11.274945462810345"> 
     </trkpt> 
     <trkpt lat="48.08161089580602" lon="11.274945462810345"> 
     </trkpt> 
    </trkseg> 
    </trk> 

и я пытаюсь загрузить документ с помощью

pugi::xml_document doc; 
pugi::xml_parse_result result = doc.load_file("kreisel_argelsriederfeld.xml"); 
std::cout<<"Load result: " << result.description()<<", mesh name"<< doc.child("name").attribute("bahn").value()<<std::endl; 


pugi::xml_node bahnen = doc.child("trkseg"); 
std::cout << bahnen.value()<<std::endl; 

Хотя, когда я это называю, выход получает ", mesh name", а затем показывает только пустое пространство , Где моя ошибка? Это потому, что я называю неправильные имена или что-то в этом роде? Как «Загрузить результат», я получаю «Нет ошибки», поэтому файл должен быть загружен, не так ли? Я нашел несколько примеров и руководств, но все они используют это для загрузки файла.

ответ

1

Файл не действителен XML (используется только один элемент верхнего уровня <trk>). См. Это pugixml error handling example.

Если вы хотите иметь более одного <trk>, их необходимо обернуть на одном верхнем уровне <trks>.

Редактировать: Пропустил часть о том, что ошибки не было. Возможно, pugixml терпим здесь, и реальная проблема заключается в том, что <trk> считается дочерним узлом документа. Итак, вместо doc.child("name") попробуйте doc.child("trk").child("name").

+0

Правильное редактирование. Pugixml терпимо относится к нескольким элементам на уровне корневого уровня (что удивительно распространено), но объект документа является отдельным узлом. – zeuxcg

+0

@ user634175 Спасибо, это решило мою проблему. – Lehue

Смежные вопросы