2016-01-06 40 views
4

我有下面的XML格式:的XPath與屬性不相等或不存在的元素

<test> 
<table> 
    <rows> 
    <row ID = "1" Name ="A"/> 
    <row ID = "2" SubID = "1" Name ="B"/> 
    <row ID = "3" Name ="C"/> 
    <row ID = "4" SubID = "1" Name ="D"/> 
    <row ID = "5" Name ="E"/> 
    <row ID = "4" SubID = "2" Name ="E"/> 
    </rows> 
    . 
    . 
</table> 
</test> 

我想借除了確實有SubID = 1的那些所有行。

的這個困難的部分,是不是所有的行具有的屬性稱爲SubID,而且並非所有的屬性SubID行,具有相同的價值

理想的輸出應該是:

<row ID = "1" Name ="A"/> 
<row ID = "3" Name ="C"/> 
<row ID = "5" Name ="E"/> 
<row ID = "4" SubID = "2" Name ="E"/> 

我曾嘗試使用與價值否定的XPath,但是這不會工作:

/test/table/row/not(@SubID=1) 

任何幫助嗎?

+0

'/ test/table/rows/row [not(@ SubID = 1)]' –

+0

https://en.wikipedia.org/wiki/XPath#Predicates –

回答

8

「硬部分」 其實是容易的:基本

元件[not(@屬性= '')]

謂詞將排除元件而不屬性元素其中屬性等於

因此,在特定情況下,所有row元素沒有@SubID等於1

/test/table/rows/row[not(@SubID = '1')] 

選擇

<row ID="1" Name="A"/> 
<row ID="3" Name="C"/> 
<row ID="5" Name="E"/> 
<row ID="4" Name="E" SubID="2"/> 

的要求。

相關問題