首页 > 解决方案 > XPath 查找具有最高值的元素

问题描述

我想创建一个 XPath 表达式来返回票房最高的电影的标题,但我做不到。

我已经看过这个和其他类似的问题,虽然它们很有帮助,但我无法让任何这些解决方案适用于我的案例。我试图修改 XPath,但它返回所有标题,我真的不知道该怎么做来修复它。

这是我的 .xml 文件,下面是我的 XPath 表达式

<movie_database>
  <movies>

    <movie>
      <title>Movie 1</title>
      <finance_records>
        <gross>56,000,000 $</gross>
      </finance_records>      
    </movie>
    
    <movie>
      <title>Movie 2</title>
      <finance_records>
        <gross>150,100,055 $</gross>
      </finance_records>       
    </movie>
    
    <movie>
      <title>Movie 3</title>
      <finance_records>
        <gross>100,577,000 $</gross>
      </finance_records>       
    </movie>
  </movies>
</movie_database>

./movie_database/movies/movie[finance_records[not(../finance_records/gross/number(translate(.," ,$","")) > gross/number(translate(.," ,$","")))]]/title

标签: xmlxpath

解决方案


对于 xpath 1.0 尝试:

//movie[not(..//movie//gross/number(translate(.," ,$","")) > .//gross/number(translate(.," ,$","")))]/title

使用 xpath > 1.0 尝试:

//movie[.//gross/number(translate(.," ,$","")) = max(..//movie//gross/number(translate(.," ,$","")))]/title

无论哪种情况,Movie 2都应该退货。


推荐阅读