Итак, я пытаюсь прочитать XML-документ скромного размера. Он устроен так:
<project identifier="project1">
<author>Joe Smith</author>
<author2>Rick Jones</author2>
<path>projects/internal/project2</path>
<version>1.51</version>
</project>
<project identifier="project2">
<author>Terry Chimes</author>
<author>Janie Jones</author>
<path>projects/external/project2</path>
<version>19.77</version>
</project>
... и так далее, для нескольких сотен проектов.
Я использую QXmlStreamReader
Qt5.10, который, возможно, был создан (или задокументирован) садистами.
Я могу найти каждый project
, используя xmlReader.readNextStartElement
, или читая тег за тегом, пока не найду один с внутренними атрибутами (только project
теги имеют атрибуты в этом файле).
Но как только я читаю один из этих родительских элементов, QXmlStreamReader
всасывает все теги вплоть до закрывающего тега </project>
. Проблема в том, что мне нужно получить некоторые из этих данных, в данном случае то, что находится внутри тегов <path></path>
.
С помощью xmlReader.readElementText(QXmlStreamReader::IncludeChildElements
я могу получить все данные, которые были скопированы, но это всего лишь один большой дамп данных без тегов.
Кто-нибудь знает, как я могу «перемотать» и прочитать внутренние теги? Или помешать потоковому считывателю качнуться вперед и высосать все данные?