qt - 解析相同标记名下的 xml 节点子值
问题描述
我有两个节点PW_KeyGrip
,PW_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()
现在因为我在同一个标签名称下有两个值。你能告诉我一种方法来分别选择同一标签名称下的两个值吗?
例如:
PW_p1_EDC
下如何选择PW_KeyGrip
PW_p1_EDC
下如何选择PW_PalmerGrasp
解决方案
您可以使用一个简单的函数来检索给定标签名称下的节点值:
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
推荐阅读
- reactjs - 所以,我不明白“自我”是如何被定义的
- swiftui - 如何在 Swift UI 中使用不可点击的按钮制作列表项行?
- angular - 如何在 OnDestroy 中完成活动的 debounceTime
- python - 如何从表的第一列获取前 8 个字符以及如何使用 python 从 postgresql 导入它;
- graphql - i18next 如何检测存储在数据库中的语言偏好?
- javascript - Laravel 在提交时添加加载器
- regex - 在 Grafana 面板中隐藏列
- javascript - PHP表单提交获取返回值到html
- django - 如何将查询集中的对象呈现给 Django 模板中的不同标签?
- node.js - 使用 KafkaJS 时出现 Kafka 连接错误