我想知道是否有更短的方式來選擇忽略在列表中有XPath來選擇的屬性值列表中排除節點
指定的屬性值,操作實施例的那些節點列表:
/item[not(@uid='id1') and not(@uid='id2')]
期望中的另類:
/item[not(@uid in('id1','id2'))]
我想知道是否有更短的方式來選擇忽略在列表中有XPath來選擇的屬性值列表中排除節點
指定的屬性值,操作實施例的那些節點列表:
/item[not(@uid='id1') and not(@uid='id2')]
期望中的另類:
/item[not(@uid in('id1','id2'))]
您可以使用正則表達式 - 如果您的XPath實現支持它 - 或寫
/item[not(@uid='id1' or @uid='id2')]
這可能是有點短。
如果屬性名的名單很長,下面是處理這種情況一個好辦法:
//item[not(contains('|attr1|attr2|attr3|attr4|attr5|attr6|attrN|',
concat('|', @uid, '|')
)
)]
我需要在.NET中構建非常長的XPath 。 而不是像LINQ聚合方法一樣使用種子,你可以簡單地用'|'連接字符串,添加尾隨和引導,並使用它。 謝謝! – Nickmaovich 2014-03-06 11:50:07
@Nickmaovich,不客氣。 – 2014-03-06 15:08:13
至少在XPath的序列2個一般來說比較進行配對和存在性,所以你可以寫:
/item[not(@uid = ('id1','id2'))]
你說得對,另一種方法如果我有兩個項目,如'id1'和'id11',它會忽略這兩個錯誤 – Aitorito 2012-07-16 08:56:34