我有一个以下HTML代码示例。我的目标是使用XPath解决价格问题:
<div class="product-price">
<div class="Price">
<span class="value">9,99 €</span>
</div>
</div>
.
.
.
<div class="product-price">
<div class="Price">
<span class="value">4,99 €</span>
</div>
</div>
我正在尝试以下XPATH表达式:
*//div[@class="product-price"]/span[@class="value"]/text()
或
*//div[@class="product-price"]/span[@class="value"]
结果是:
9,99 €
4,99 €
到目前为止,太好了。现在,我需要得到结果 没有货币符号 ,并且小数点必须是.
而不是,
。
我玩了以下表达式,在这个论坛上我发现了类似的问题:
*//div[@class="product-price"]/span[@class="value"
and translate(normalize-space(),"€","")]
但不幸的是,它不起作用。
在我的情况下,不允许使用循环来更改值。
有人对我的问题有聪明的解决方案吗?
答案 0 :(得分:0)
您尝试的XPath无法正常工作,因为translate()
在谓词中,这对于制定选择标准非常有用,但不能更改选择结果。要将功能应用于所选内容...
对于 单个 这样选择的span
元素,可以使用
translate(//div[@class="product-price"]/span[@class="value"], ", €", ".")
对于 多个 这样选定的span
元素,可以在 XPath 2.0 中使用
//div[@class="product-price"]/span[@class="value"]/translate(., ", €", ".")
对于 多个 这样选择的span
元素,在 XPath 1.0 中,您必须遍历XPath之外的结果。>
答案 1 :(得分:0)
在 Xpath 2.0
for $i in //div[@class='product-price']//span[@class='value']
return translate($i, ", €", ".")