一个像这样的弦:

<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计数检查索引在范围内。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top