【发布时间】:2011-05-09 11:43:29
【问题描述】:
我有一个带有一些节点的 XML 文档,例如
<node name="xxx" id="xxx">
我可以使用单个 XPath 表达式来获取其父节点也具有@id = 7 属性的所有属性节点吗?
【问题讨论】:
-
好问题,+1。到目前为止,请参阅我的答案以获取唯一正确且完整的解决方案。 :)
标签: c# xml xpath xmldocument selectnodes
我有一个带有一些节点的 XML 文档,例如
<node name="xxx" id="xxx">
我可以使用单个 XPath 表达式来获取其父节点也具有@id = 7 属性的所有属性节点吗?
【问题讨论】:
标签: c# xml xpath xmldocument selectnodes
没有。您需要逐一定义要读取的属性。
/node[@id=7]/@name
将获得name
/node[@id=7]/@id
将获得id
等等
【讨论】:
这将选择所有 id attribute 具有值 7 的节点:
//*/@id[. = '7']
【讨论】:
//*[id = '7']/@name
使用:
//@*[not(name()='id') and ../@id = 7]
这会选择其父级具有id 属性且值为7 的所有非id 属性。这将接受id='7' 和id=' 7 '
//@*[not(name()='id') and ../@id = '7']
这将选择其父级具有id 属性且值为字符串'7' 的所有非id 属性。这将接受 id='7' 但不接受 id=' 7 '
【讨论】: