Xpath根据元素条件从节点提取元素

问题描述

我有一个用于提取元素的xml-

<?xml version="1.0"?>
<Carmodels>
  <Cars>
    <id>1223</id>
    <cartype>Sedan</cartype>
    <price>1000</price>
  </Cars>
  <Cars>
    <id>1234</id>
    <car>Sports</car>
    <price>2500</price>
  </Cars>
  <Cars>
    <id>1123</id>
    <car>Taxi</car>
    <price>9000</price>
  </Cars>
  <Cars>
   <id>1223</id>
    <car>Taxi</car>
    <price>1000</price>
   </Cars>
</Carmodels>

现在,我需要从<price> = Taxi的<cars>节点提取<car>标签。我只需要 Xpath 即可提取价格。

样本输出

 9000
 1000

我们只需要Xpath即可通过Java执行。

解决方法

请尝试以下XPath表达式。它将 car 标签值转换为小写。因此,出租车出租车都被考虑在内。

XPath

/Carmodels/Cars[lower-case(car)="taxi"]/price
,

XPath 1.0表达式支持用小写或大写字符写的计程车单词:

//Cars[car[translate(.,"tT","tt")="taxi"]]/price
//car[translate(.,"tt")="taxi"]/following-sibling::price

输出:2个节点

<price>9000</price>
<price>1000</price>