考虑以下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>
我怎么能这样做?你们知道一种快速而干净的方法吗?
提前感谢您的帮助!
答案 0 :(得分:5)
每个QDomNode都有
void QDomNode::save ( QTextStream & str, int indent) const
方法,QTextStream有
QString * string () const
所以,您只需使用这些方法,并获得简单,代码页感知和灵活的代码(QDomNode和QTextStream都是非常强大的类型)。
您可以使用firstChildElement(name)/ nextSiblingElement(name)遍历具有特定名称的元素,或者您可以获取配方的根元素并编写foreach(QDomNode节点,root.childNodes())或smth。有很多方法可以在Qt中使用Xml。看看Trolls提供的教程。
答案 1 :(得分:0)
Qt支持SAX和DOM。只需写一个查询。 Here is a tutorial.