【问题标题】:Xpath not getting the max valueXpath没有获得最大值
【发布时间】:2012-10-25 23:29:14
【问题描述】:

所以我被困在使用 Xpath 1.0 并且似乎无法最大程度地工作......这是我的 Xpath 查询:

//m:REPORT_DATA[m:DATA_ITEM = 'LMP_PRC' and //m:INTERVAL_NUM[not(//INTERVAL_NUM > m:INTERVAL_NUM)]]/m:VALUE/text()

我正在尝试使用 data_item=LMP_PRC 查找最高间隔数的值。唯一不起作用的部分是“and”之后的“max”。

谢谢

【问题讨论】:

  • 请提供示例 XML 和期望的结果。
  • 示例 XML 是一个巨大的文件:参见此处:pastebin.com/55f8XMi1 所需结果是最高(最大)interval_num 期间“LMP_PRC”的“值”
  • 注意:我不能使用 max,因为 java 只支持原生 xpath 1.0
  • 这就是我要说的。我假设您能够提供重现您的问题的示例 XML。
  • 我在上面的 xml 文件中包含了一个 pastebin 链接,它很大。我假设链接的文件中 LMP_PRC 的最大间隔应该约为 240,并且应该具有大约 30 的值。

标签: xml xpath


【解决方案1】:

这会返回预期值吗?对于第二个样本,它返回 27.47472。

//m:REPORT_DATA[m:DATA_ITEM='LMP_PRC' and not(m:INTERVAL_NUM < //m:INTERVAL_NUM)]/m:VALUE/text()

【讨论】:

    【解决方案2】:

    你的子表达式

    //m:INTERVAL_NUM[not(//INTERVAL_NUM > m:INTERVAL_NUM)]
    

    在谓词中,这意味着您只使用它的布尔值;如果此子表达式至少选择一个节点,则为真,它总是这样做,因此条件是多余的。

    如果没有看到您的更多要求,我无法帮助您更正查询。但是我要指出,如果您的源文档是“巨大的”,那么这将需要“永远”,其中“永远”是与“巨大”平方成正比的时间。

    【讨论】:

      【解决方案3】:

      如果您使用的是 Java,那么您不会被 XPath 1.0 所束缚。多年来,XPath 2.0 对 Java 的支持一直可用(主要但不完全来自 Saxon)。与其把一只手绑在背后解决这个问题,不如下载合适的工具来完成这项工作。

      【讨论】:

        猜你喜欢
        • 2022-11-20
        • 2020-02-24
        • 2018-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多