2010-01-28 141 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) 
相關問題