有没有办法获得其子值不等于另一个子轴的节点?

时间:2017-02-16 16:56:02

标签: xpath

我有这个XML,并且我试图让所有/root/ecommerce/cart/product名为/root/ecommerce/promo/promobrands/promobrand/branduid的孩子不在<root> <ecommerce> <cart> <product> <branduid>value1</branduid> </product> <product> <branduid>value2</branduid> </product> <product> <branduid>value3</branduid> </product> <product> <branduid>value4</branduid> </product> </cart> <promo> <promobrands> <promobrand> <branduid>value1</branduid> </promobrand> <promobrand> <branduid>value3</branduid> </promobrand> </promobrands> </promo> </ecommerce> </root> 值中。

/root/ecommerce/product

所以我只需要获得其品牌值为value2value4的{​​{1}}个节点。 在XPath中有没有办法得到这个结果?

2 个答案:

答案 0 :(得分:2)

尝试以下XPath表达式并告诉我结果

//cart/product[branduid[not(text()=//promobrand/branduid/text())]]

答案 1 :(得分:0)

如果您使用的是xpath 2.0,则下面的表达式是一种直接的实现方式:

//branduid except //promobrand/branduid

否则Andersson的回答很好。