我的XML数据看起来像这样
<priceData>
<div class='price'>
<div class='price-old'>20.00</div>
<div class='price-new'>10.00</div>
<div class='price-tax'>8.00</div>
</div>
<div class='price'>
40.00 <div class='price-tax'>25.00</div>
</div>
</priceData>
我想使用Xpath从第一个价格div中提取“price-new”的数据,并从第二个价格div中提取值40.00。这必须使用单个表达式完成。
我尝试了像
这样的表达式//div[contains(@class, 'price') and not(contains(@class, 'tax')) and not(contains(@class, '-old'))]
和
//div[contains(@class, 'price') and not(contains(@class, 'tax')) and not(descendant::div[contains(@class, '-old') and not(contains(@class, '-tax'))]) and not(contains(@class, '-old'))]
和其他一些人,但我不能让它工作如何。 我总是从第一个案例中获取额外的节点,我只需要单个节点(如果没有更多节点,则需要新价格或价格)。
答案 0 :(得分:2)
您可以尝试使用xpath union(|
)将2个查询合并为一个。给定问题中的标记为XML输入,以下xpath(为便于阅读而格式化):
//div[@class='price']/div[@class='price-new']/text()
|
//div[@class='price']/text()[normalize-space()]
在xpath tester中返回'预期'结果:
Text='10.00'
Text='40.00'