如何使用 QDomDocument 获取子节点的值?
接收这样的字符串:
<invoke name="CanClose" returntype="xml">
<arguments>
<string># 998.40</string>
<number>49920</number>
</arguments>
</invoke>
我想使用 QDomDocument 来按索引获取参数子节点的值(我想提取字符串“# 998.40”和“49920”的例子)。
这就是我尝试过的:
QString argument(int index)
{
QDomNode arg = xml->elementsByTagName("arguments").at(index);
return arg.nodeValue();
}
但即使 arg
也是空的。我在这里做错了什么?
提前致谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
显然,节点内的文本也是节点本身。它是这样工作的:
So apparently the text inside a node is a node itself, too. This is how it works:
elementsByTagName() 返回节点子树中带有标签名称“arguments”的所有节点(实际上是元素)的列表。
.at() 从列表中返回这些“参数”元素之一,而不是它们的子元素。
如果您想要子节点,则需要迭代它们各自的 childNodes()。
elementsByTagName() returns a list of all nodes (elements actually) with tag name "arguments" in the nodes subtree.
.at() returns one of those "arguments" elements from the list, not their children.
If you want the children, you need to iterate over their respective childNodes().
这个函数返回一个 QDomNodList,其中有一个 item 函数来获取每个节点(以及一个计数以了解有多少个节点)
由此我想说代码可能应该是
http://doc.trolltech.com/3.3/qdomdocument.html#elementsByTagName
http://doc.trolltech.com/3.3/qdomnodelist.html#item
您可能应该使用 NodeList 计数来检查索引是在界限之内。
This function returns a QDomNodList from which there is an item function to get each node (and a count to know how many there are)
From this I would say the code probably should be
http://doc.trolltech.com/3.3/qdomdocument.html#elementsByTagName
http://doc.trolltech.com/3.3/qdomnodelist.html#item
You probably should check using the NodeList count that the index is within bounds.