3 Stimmen

Anzeige eines Teils einer XML-Datei beim Parsen

Betrachten Sie die folgende XML-Datei:

<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>

Nehmen wir an, ich möchte diese Datei parsen und jedes Rezept als XML erfassen, jedes als separaten QString.

Ich würde zum Beispiel gerne einen QString haben, der :

<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>

Wie kann ich das machen? Kennen Sie eine schnelle und saubere Methode, um dies durchzuführen?

Vielen Dank im Voraus für Ihre Hilfe!

5voto

Maxim Popravko Punkte 3971

Jeder QDomNode hat

void QDomNode::save ( QTextStream & str, int indent) const

Methode, und QTextStream hat

QString * string () const

Sie verwenden also einfach diese Methoden und erhalten einfachen, codepage-freien und flexiblen Code (sowohl QDomNode als auch QTextStream sind sehr leistungsfähige Typen).

Sie können durch Elemente iterieren, die einen bestimmten Namen haben, indem Sie firstChildElement(name)/nextSiblingElement(name) verwenden, oder Sie können das Root-Element der Rezepte abrufen und foreach(QDomNode node, Root.childNodes()) oder ähnliches schreiben. Es gibt viele Möglichkeiten, die Xml in Qt zu verarbeiten. Schauen Sie sich die Tutorials von Trolls an.

0voto

dawg Punkte 89931

Qt unterstützt sowohl SAX als auch DOM. Schreiben Sie einfach eine Abfrage. Hier ist eine Anleitung.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X