我试图使用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>
。我该怎样避免这个?
答案 0 :(得分:1)
//
可用于选择任何后代; *
可用于选择任何元素;并且@*
可以选择任何属性,所以:
//*[not(@*)]
根据OP的更新进行更新:
要排除具有属性的后代元素:
//*[not(@*) and not(.//*[@*])]
因此,对于给定的XML,只会选择以下节点:
<node>shukria</node>
<item>first item</item>
<values>normal price</values>
按要求。