Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath 是否有方法获取其子值不等于另一个子轴的节点?_Xpath - Fatal编程技术网

Xpath 是否有方法获取其子值不等于另一个子轴的节点?

Xpath 是否有方法获取其子值不等于另一个子轴的节点?,xpath,Xpath,我有这个XML,我试图获取所有的/root/ecommerce/cart/product,它们的branduid子项不在/root/ecommerce/promo/promobrands/promobrand/branduid值中 <root> <ecommerce> <cart> <product> <branduid>value1</brandui

我有这个XML,我试图获取所有的
/root/ecommerce/cart/product
,它们的branduid子项不在
/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>

价值1
价值2
价值3
价值4
价值1
价值3
因此,我只需要获取branduid值为
value2
value4
/root/ecommerce/product
节点。
XPath中是否有方法获得此结果?

请尝试下面的
XPath
表达式,并告诉我结果

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

如果您使用的是xpath 2.0,下面的表达式是一种简单的实现方法:

//除//promobrand/branduid之外的branduid

否则,安德森的答案是好的