首页 > 解决方案 > 解析相同标记名下的 xml 节点子值

问题描述

我有两个节点PW_KeyGripPW_PalmerGrasp并且两个节点中的节点children名称相同。

<PW_KeyGrip>
  <PW_p1_EDC>173</PW_p1_EDC>
  <PW_p2_EDC>78</PW_p2_EDC>
  <PW_p2_FDS>196</PW_p2_FDS>
 </PW_KeyGrip>
 <PW_PalmerGrasp>
  <PW_p1_EDC>202</PW_p1_EDC>
  <PW_p1_APB>118</PW_p1_APB>
  <PW_p2_EDC>86</PW_p2_EDC>
 </PW_PalmerGrasp>

早些时候,我曾经按标签名称搜索以选择值:

root.elementsByTagName("PW_p1_EDC").at(0).firstChild().nodeValue()

现在因为我在同一个标​​签名称下有两个值。你能告诉我一种方法来分别选择同一标签名称下的两个值吗?

例如:

  1. PW_p1_EDC下如何选择PW_KeyGrip
  2. PW_p1_EDC下如何选择PW_PalmerGrasp

标签: qt

解决方案


您可以使用一个简单的函数来检索给定标签名称下的节点值:

int findValue(QDomElement const& root, QString const& name)
{
    QDomElement element = root.firstChildElement(name);
    return element.firstChildElement("PW_p1_EDC").firstChild().nodeValue().toInt();
}

然后你必须这样称呼它:

    qDebug() << "PW_KeyGrip: " << findValue(root, "PW_KeyGrip");
    qDebug() << "PW_PalmerGrasp: " << findValue(root, "PW_KeyGrip");

如果您想查找没有确切路径的值,您可以查看 XPath 和QXmlQuery


推荐阅读