2010-01-28 173 views

回答

81

/a/*[not(self::b)]

+2

+1的'self'轴的很好使用;) – Lucero 2010-01-28 16:16:58

+2

@Lucero:我欠@Tomalak对这一想法:) – AakashM 2010-01-28 16:18:22

+0

感谢信用。 :) – Tomalak 2010-01-28 16:21:01

1

的XPath看起来:

a/*[name(.) !='b'] 

所以,选择孩子 'A' 的名字不等于 'B'

+3

正在使用的命名空间和前缀时,这打破。 – Lucero 2010-01-28 22:24:50

+0

@Lucero - 根据源XML没有命名空间,但是如果让你拥有“本地名”功能 – Dewfy 2010-01-29 08:38:59

+2

是啊,和本地名称()打破也因为它会匹配来自任何命名空间,而不是一个特定的元素名称的元素。由于这里发布的示例通常是简化的(这里很明显),我不太确定没有使用名称空间,即使如此,如果有人使用Google,并且遇到此答案,他们应该意识到您的解决方案不适用于名称空间。 – Lucero 2010-01-29 11:33:47

9

在XPath 2.0,你甚至可以做

/a/(* except b) 
相关问题