如何选择父节点具有某些属性的节点
如何选择父节点具有某些属性的节点。 例如:什么是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>
states/expiration_time[../@elem = "0"]
?
这会给你有ATLEAST一个属性
//*[count(./@*) > 0]
使用所有节点:
/*/*/expiration_time
这里选择是XML的顶级元素的盛大孩子都expiration_time
元素文件。
/*/*[@*]/expiration_time
这将选择任何expiration_time
元件的父具有至少一个属性,并且是XML文档的顶部元素的子元素。
/*/*[not(@*)]/expiration_time
这将选择任何expiration_time
元件,其父母有没有属性,是XML文档的顶级元素的一个孩子。
/*/*[@elem = '2']/expiration_time
这将选择任何expiration_time
元件的父具有elem
属性与字符串值“2”,这是(父)的XML文档的顶部元素的子元素。
+1这帮了我很多。非常好的例子! – mrt 2014-05-20 11:31:31
@mrt,不客气:) – 2014-05-20 16:15:48
这个符号确实帮助我找到了一个给定的父母的所有子元素(多个不同的元素),其中一个属性等于某个东西! //field[../@id =“FSCHA”] =返回其父元素具有id = FSCHA的所有字段元素。但是//* [../@id =“FSCHA”]在同一场景下返回了所有元素,而不仅仅是字段。 – 2014-01-12 19:07:07