Показать часть файла XML во время анализа - PullRequest
3 голосов
/ 12 апреля 2010

Рассмотрим следующий 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 ]

5 голосов
/ 13 апреля 2010

Каждый 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. Посмотрите на учебники, предоставленные троллями.

0 голосов
/ 12 апреля 2010

Qt поддерживает SAX и DOM. Просто напишите запрос. Вот учебник.

...