Показать часть файла XML во время анализа
Рассмотрим следующий XML-файл:
<cookbook>
<recipe xml:id="MushroomSoup">
<title>Quick and Easy Mushroom Soup</title>
<ingredient name="Fresh mushrooms"
quantity="7"
unit="pieces"/>
<ingredient name="Garlic"
quantity="1"
unit="cloves"/>
</recipe>
<recipe xml:id="AnotherRecipe">
<title>XXXXXXX</title>
<ingredient name="Tomatoes"
quantity="8"
unit="pieces"/>
<ingredient name="PineApples"
quantity="2"
unit="cloves"/>
</recipe>
</cookbook>
Допустим, я хочу проанализировать этот файл и собрать каждый рецепт как XML, каждый как отдельную строку QString.
Например, я хотел бы иметь QString, которая содержит:
<recipe xml:id="MushroomSoup">
<title>Quick and Easy Mushroom Soup</title>
<ingredient name="Fresh mushrooms"
quantity="7"
unit="pieces"/>
<ingredient name="Garlic"
quantity="1"
unit="cloves"/>
</recipe>
Как я мог это сделать? Ребята, вы знаете, быстрый и чистый метод для этого?
Заранее спасибо за помощь!
2 ответа
Каждый QDomNode имеет
void QDomNode::save ( QTextStream & str, int indent) const
метод, и QTextStream имеет
QString * string () const
Итак, вы просто используете эти методы и получаете простой код с гибкой кодовой страницей (гибкий QDomNode и QTextStream).
Вы можете перебирать элементы с определенным именем, используя firstChildElement(name)/nextSiblingElement(name), или вы можете получить корневой элемент рецептов и писать foreach(узел QDomNode, root.childNodes()) или smth. Есть много способов прецессировать Xml в Qt. Посмотрите на учебники, предоставленные троллями.
Qt поддерживает и SAX, и DOM. Просто напишите запрос. Вот учебник.