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选择1个元素_Xpath_Import.io - Fatal编程技术网

如果存在两个元素中的一个,则使用XPath选择1个元素

如果存在两个元素中的一个,则使用XPath选择1个元素,xpath,import.io,Xpath,Import.io,我想选择一个元素,如果2个元素中有一个存在的话,同时在2个页面中使用它 第1页(带折扣的价格) $2,990.00 $1,794.00 或第二页(仅一个价格) $298.00 我用过 //span[@class=“originalRetailPrice”]|(//div[@class=“priceBlock”])[1] 但是我得到了两倍的价格 我想要的是选择第一个价格,当它是class=“originalRetailPrice”或//div[@class=“price”]/text()[

我想选择一个元素,如果2个元素中有一个存在的话,同时在2个页面中使用它

第1页(带折扣的价格)


$2,990.00
$1,794.00
或第二页(仅一个价格)


$298.00
我用过
//span[@class=“originalRetailPrice”]|(//div[@class=“priceBlock”])[1]
但是我得到了两倍的价格

我想要的是选择第一个价格,当它是
class=“originalRetailPrice”
//div[@class=“price”]/text()[1]


因此,最后我想在这两个页面上进行选择

使用
/
获取
中任何级别的文本:

//div[@class="price"][1]//text()
结果:

Text=''
Text='$2,990.00'
Text=''

并使用以下内容过滤空文本:

结果第1页:

Text='$2,990.00'
结果第2页:

Text='$298.00'
您可以这样尝试:

//span[@class="originalRetailPrice"] | //div[@class="price" and not(span[@class="originalRetailPrice"])]/text()[1]

第二部分(
|
的右侧)选择
div[@class=“price”]
元素,前提是它没有子元素
span[@class=“originalRetailPrice”]

完美,非常感谢快速回答。如果在第一个xml中交换div块,结果将是错误的。这不是问题answer@splash58这个
//div[@class=“price”][1]//text()
对我有用,所以这是一个答案。这是你的问题,你可以自己决定,但是当它的class=“originalRetailPrice”在answer@OP:它可能在特定情况下有效,但不符合问题中描述的标准,因此,在某些情况下,它会给出错误的答案。
Text='$2,990.00'
Text='$298.00'
//span[@class="originalRetailPrice"] | //div[@class="price" and not(span[@class="originalRetailPrice"])]/text()[1]