我用這個XPath表達式來列出所有「無試驗」項目:我XPATH表達不能正常工作
/Items/Item[State!='TEST']/Name
通常輸入XML看起來是這樣的,一切工作正常:
<Items>
<Item>
<Name>Item1</Name>
<State>ACTIVE</State>
</Item>
<Item>
<Name>Item2</Name>
<State>TEST</State>
</Item>
</Items>
但Item錯過State元素時,xpath表達式不會選擇任何內容:
<Items>
<Item>
<Name>Item1</Name>
</Item>
<Item>
<Name>Item2</Name>
</Item>
</Items>
請問我該如何更改我的xpath表達式n,以便State元素不存在時它也可以工作?如果狀態元素不存在則將項目視爲「不測試」項目。我沒有選擇更改xml結構。
+1,很好的答案。你確定關於語句「State!='TEST''選擇那些其(第一)狀態元素的值不等於TEST的項目」嗎?我認爲它選擇那些具有* any *'State'子元素的整個值不等於'TEST'的項目。換句話說,我相信比較中的節點測試不會摺疊爲字符串值,以至於不能排除存在性比較。 – LarsH 2012-01-09 20:48:49
@LarsH - 當然你是對的。更新。 – 2012-01-09 21:01:37
它的工作原理!非常感謝你們的幫助! – Vojtech 2012-01-10 10:59:44