XPath选择没有特定元素的子元素

时间:2014-06-07 14:08:34

标签: xml xpath

示例我有

<a>
   <test>
         <name>h</name>
   </test>
   <test2>
         <name>s</name>
   </test2>
   <test3/>
</a>

我想选择里面没有名字元素的测试 到目前为止我做了什么:

/a/test/*[not(self::name)]

预期输出应该只显示test3,但是我的程序显示的内容都包括test,test2和test3。我的编码有什么错误吗?

2 个答案:

答案 0 :(得分:2)

使用/a/*[not(name)],选择a根元素中没有name子元素的所有子元素。

答案 1 :(得分:0)

这将查找a元素的子元素的任何元素,这些元素以名称&#39; test&#39;开头。并且没有名为name的子元素:

/a/element()[starts-with(local-name(.), 'test')][not(child::name)]