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。查看 Trolls 提供的教程。

于 2010-04-12T20:16:08.373 回答
0

Qt 支持 SAX 和 DOM。只写一个查询。这是一个教程。

于 2010-04-12T19:30:32.873 回答