我正在解析以下结构的相当复杂的 XML 文件:
<root>
...
...
<item>
<subitem id="1"/>
<text>
text1
</text>
</item>
<item>
<subitem id="2"/>
<text>
text2
< /text>
</item>
...
<item>
...
</item>
...
</root>
这很粗糙,但我希望你明白我的意思。我主要对“项目”节点感兴趣。于是我写了如下代码(直接出自Qt的在线手册):
QXmlQuery query;
query.setQuery("//item/");
QXmlResultItems result;
query.evaluateTo(&result);
QXmlItem item(result.next());
while (!item.isNull())
{
if (item.isNode())
{
// WHAT DO I DO NOW?
}
item = result.next();
}
现在,QXmlItem 似乎代表两个概念,一个字面值(如字符串)或一个节点(这就是 item.isNode() 所做的)。不幸的是,我无法掌握如何将 QXmlItem 转换为可以再次查询的东西。特别是从上面的示例中,我想获取“id”属性和文本元素。我可以使用 XQuery 方法来做到这一点,还是我离这里很远?
有什么建议吗?
谢谢!