【问题标题】:Single xpath expression to get some attributes单个 xpath 表达式来获取一些属性
【发布时间】:2011-05-09 11:43:29
【问题描述】:

我有一个带有一些节点的 XML 文档,例如

<node name="xxx" id="xxx">

我可以使用单个 XPath 表达式来获取其父节点也具有@id = 7 属性的所有属性节点吗?

【问题讨论】:

  • 好问题,+1。到目前为止,请参阅我的答案以获取唯一正确且完整的解决方案。 :)

标签: c# xml xpath xmldocument selectnodes


【解决方案1】:

没有。您需要逐一定义要读取的属性。

/node[@id=7]/@name 

将获得name

/node[@id=7]/@id

将获得id

等等

【讨论】:

  • 实际上这很容易在单个 XPath 表达式中指定——请参阅我的答案。不必指定特定的属性名称。
  • 您写了 您需要定义要读取的属性 - 一个一个。这句话错了。
【解决方案2】:

这将选择所有 id attribute 具有值 7 的节点:

//*/@id[. = '7']

【讨论】:

  • 选择所有 id = 7 的名称属性怎么样?
  • @user496949 - 那将是://*[id = '7']/@name
【解决方案3】:

使用:

//@*[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 '

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多