如何选择具有某些属性的父节点

时间:2012-02-16 08:35:54

标签: xpath

如何选择具有某些属性的父节点。 例如:什么是Xpath来选择所有expiration_time元素。 在下面的XML中,如果states元素有属性,我会收到错误,否则没有probs。

由于

<lifecycle>
  <states elem="0">
    <expiration_time at="rib" zing="chack">08</expiration_time>
  </states>
  <states elem="1">
    <expiration_time  at="but">4:52</expiration_time>
  </states>
  <states elem="2">
    <expiration_time  at="ute">05:40:15</expiration_time>
  </states>
  <states elem="3">
    <expiration_time>00:00:00</expiration_time>
  </states>

</lifecycle>

3 个答案:

答案 0 :(得分:4)

states/expiration_time[../@elem = "0"]

答案 1 :(得分:3)

使用

/*/*/expiration_time

这将选择所有expiration_time个元素,这些元素是XML文档顶级元素的子元素。

/*/*[@*]/expiration_time

这将选择其父级至少具有一个属性并且是XML文档顶部元素的子元素的任何expiration_time元素。

/*/*[not(@*)]/expiration_time

这将选择其父级没有属性并且是XML文档顶部元素的子元素的任何expiration_time元素。

/*/*[@elem = '2']/expiration_time

这会选择其父级具有expiration_time属性的任何elem元素,其字符串值为&#39; 2&#39;那就是(父)XML文档顶部元素的子元素。

答案 2 :(得分:0)

这将为您提供具有至少一个属性的所有节点

//*[count(./@*) &gt; 0]