3

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

どうすればこれを行うことができますか?あなたたちはこれを実行するための迅速でクリーンな方法を知っていますか?

よろしくお願いします!

4

2 に答える 2

5

すべてのQDomNodeには

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

メソッド、およびQTextStreamには

QString * string () const

したがって、これらのメソッドを使用するだけで、コードページを認識したシンプルで柔軟なコードを取得できます(QDomNodeとQTextStreamはどちらも非常に強力なタイプです)。

firstChildElement(name)/ nextSiblingElement(name)を使用して特定の名前を持つ要素を反復処理するか、レシピのルート要素を取得してforeach(QDomNode node、root.childNodes())、またはsmthを書き込むことができます。QtでXmlを歳差運動させる方法はたくさんあります。トロールが提供するチュートリアルを見てください。

于 2010-04-12T20:16:08.373 に答える
0

QtはSAXとDOMの両方をサポートします。クエリを書くだけです。これがチュートリアルです。

于 2010-04-12T19:30:32.873 に答える