如何使用 QDomDocument 获取子节点的值?

发布于 2024-09-15 10:38:45 字数 615 浏览 5 评论 0 原文

接收这样的字符串:

<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 也是空的。我在这里做错了什么?

提前致谢。

A recieve a string like this:

<invoke name="CanClose" returntype="xml">
   <arguments>
       <string># 998.40</string>
       <number>49920</number>
   </arguments>
</invoke>

I'd like to use QDomDocument to get the values of arguments' child nodes by their index (I would like to extract the strings "# 998.40" and "49920" in the example).

This is what I tried:

QString argument(int index)
{
    QDomNode arg = xml->elementsByTagName("arguments").at(index);
    return arg.nodeValue();
}

But even arg was empty. What am I doing wrong here?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无可置疑 2024-09-22 10:38:45

显然,节点内的文本也是节点本身。它是这样工作的:

QString argument(int index)
{
    QDomNode arg = xml->firstChild().namedItem("arguments");
    return arg.childNodes().at(index).firstChild().nodeValue();
}

So apparently the text inside a node is a node itself, too. This is how it works:

QString argument(int index)
{
    QDomNode arg = xml->firstChild().namedItem("arguments");
    return arg.childNodes().at(index).firstChild().nodeValue();
}
回忆凄美了谁 2024-09-22 10:38:45

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().

眼波传意 2024-09-22 10:38:45

这个函数返回一个 QDomNodList,其中有一个 item 函数来获取每个节点(以及一个计数以了解有多少个节点)

由此我想说代码可能应该是

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 计数来检查索引是在界限之内。

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

QString argument(int index) 
{ 
    QDomNode arg = xml->elementsByTagName("arguments").item(index); 
    return arg.nodeValue(); 
}

You probably should check using the NodeList count that the index is within bounds.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文