从没有属性的XML文档中选择所有元素

时间:2014-04-01 12:35:09

标签: xml xpath

我试图使用XPath表达式选择XML文档的所有元素,这给了我除了那些没有属性的元素之外的所有元素。

我尝试了下面的XPath表达式

//book[not(@*)]

但这仅适用于书籍元素。如何为整个XML文档创建它?

更新/澄清:

<root>
  <node lang="eng"> Hello how r u </node>
  <node lang = "urdu">mera dost </node>
  <node lang ="itally">chayoo chayoo  </node>
  <node>  shukria  </node>
  <items>
    <item> first item </item>
    <item type="Green"> second item</item>
  </items>
  <values price = "very low"> Price </values>
  <values> normal price</values>
  <values price= "very hight"> H price </values>
</root>

我尝试使用//*[not(@*)],但此XPath表达式也选择了<items>元素,其中也包含<item type= "Green">second item </item>。我该怎样避免这个?

1 个答案:

答案 0 :(得分:1)

//可用于选择任何后代; *可用于选择任何元素;并且@*可以选择任何属性,所以:

//*[not(@*)]

根据OP的更新进行更新:

要排除具有属性的后代元素:

//*[not(@*) and not(.//*[@*])]

因此,对于给定的XML,只会选择以下节点:

<node>shukria</node>
<item>first item</item>
<values>normal price</values>

按要求。