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>

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...