我需要使用XPath來根據多個子元素選擇不同的元素。如何使用XPath根據多個子元素選擇不同的元素?
我有一些這樣的XML:
<Cars>
<Car>
<Make>SuperCar</Make>
<Year>2009</Year>
</Car>
<Car>
<Make>SuperCar</Make>
<Year>2010</Year>
</Car>
<Car>
<Make>AwesomeCar</Make>
<Year>2010</Year>
</Car>
<Car>
<Make>SuperCar</Make>
<Year>2009</Year>
</Car>
</Cars>
我需要使用XPath(我限於XPath 1.0中),以只選擇不同的元件,其中,不同的是由兩個Make
和Year
定義。
在上面的例子中,這意味着返回所有的Car
對象,除了最後一個(因爲這是第一個Car
的副本)。
在典型情況下(即其中的對象是由一個鍵字段標識)我會使用XPath與此類似:
/*/Car[not(./Id/text()=following-sibling::Car/Id/text())]
不過,我不能完全解決如何這個適應正確使用多個字段。
我認爲是這樣的:
/*/Car[not(./Make/text()=following-sibling::Car/Make/text()
and ./Model/text()=following-sibling::Car/Model/text())]
但是,檢查是否Make
在任何地方使用,如果Model
任何地方使用,無需確保他們不一定在同一Car
使用。例如,它錯誤地排除從下面的示例XML第一Car
:
<Cars>
<Car>
<Make>SuperCar</Make>
<Year>2009</Year>
</Car>
<Car>
<Make>SuperCar</Make>
<Year>2010</Year>
</Car>
<Car>
<Make>AwesomeCar</Make>
<Year>2009</Year>
</Car>
</Cars>
任何想法?
你也許可以用''和'鍵()'函數來做到這一點。 –