Я использую Qt5.5, я хочу прочитать файл XML в память, сохраняя структуру и атрибуты узлов и отношений.
До сих пор я использовал QXmlStreamReader, однако на самом деле это мало что дает, и я не вижу никакого очевидного способа построения отношений между узлами.
В конечном итоге я хочу прочитать XML в связанный список, где корневой узел совпадает с корневым узлом xml, а другие узлы являются его потомками.
После небольшого поиска я нашел QDomDocument и QDomElement, однако, чтобы использовать их, необходимо изменить файл ‘.pro’ и добавить xml в строку QT.
То, что вы хотите, это DOM Parser. Он предоставляет древовидную модель (Document Object Model) данных XML, которую вы можете просматривать, изменять и сохранять в файл.
QXmlStreamReader
предоставляет очень простой интерфейс, похожий на SAX-парсер. Если вам просто нужно извлечь данные из текста в формате XML, этого может быть достаточно. (Для написания простого XML существует также QXmlStreamWriter
).
Эти два класса включены в модуль Qt Core
Если вам нужен более мощный анализатор XML, модуль Qt XML предлагает настоящий SAX Parser (QXmlSimpleReader
) и DOM Parser (QDomDocument
). Вы можете активировать в проектах qmake, добавив qt += xml
в профиле.
Других решений пока нет …