我用这个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