如何通过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
是空的。我在这里做错了什么?
提前致谢。
解决方案
因此,显然节点内的文本也是节点本身。这就是它的工作方式:
QString argument(int index)
{
QDomNode arg = xml->firstChild().namedItem("arguments");
return arg.childNodes().at(index).firstChild().nodeValue();
}
其他提示
ElementsByTagName()返回一个带有标签名称“参数”的所有节点(实际上)的列表。 。如果您想要孩子,则需要迭代他们各自的孩子()。
此函数返回一个QDOMNODLIST,从中有一个项目函数来获取每个节点(并且一个计数以了解有多少个节点)
我想说的是代码可能应该是
http://doc.trolltech.com/3.3/qdomdocument.html#elementsbytagname
http://doc.trolltech.com/3.3/qdomnodelist.html#item
QString argument(int index)
{
QDomNode arg = xml->elementsByTagName("arguments").item(index);
return arg.nodeValue();
}
您可能应该使用Nodelist计数检查索引在范围内。
不隶属于 StackOverflow