【问题标题】:Issue while finding right string using xpath使用 xpath 查找正确字符串时出现问题
【发布时间】:2012-09-11 10:40:19
【问题描述】:

我的 xpath 正在返回

John Hernandez | 12 Jul 201213 July 2012 作为字符串。

如果字符串包含字符|,那么我想要| 之后的字符串,否则我想要整个字符串。

我使用了以下 xpath :

 substring-after(string(./div/span[2]),'|')

如果字符串包含 | 它会给我正确的输出 2012 年 7 月 12 日但如果我的字符串不包含 |它返回空值。有没有办法检查字符串是否包含 |然后在 | 之后使用字符串o.w 返回整个字符串。

谁能帮我做这件事。

【问题讨论】:

    标签: xpath


    【解决方案1】:

    在 XPath 1.0 中你可以使用

    substring-before(substring-after(concat(string(./div/span[2]), "|", string(./div/span[2]), "|"), "|"), "|")
    

    这首先将字符串标准化为John Hernandez | 12 Jul 2012 | John Hernandez | 12 Jul 2012 |13 July 2012 | 13 July 2012 |,然后总是返回|-list 中的第二个值

    (但无论如何你都应该切换到 XPath 2,它要好得多...)

    【讨论】:

      【解决方案2】:

      如果您使用的是 XPath 2.0,则可以这样做:

      if (contains(string(div/span[2]), '|')) 
      then substring-after(string(div/span[2]),'|') 
      else string(div/span[2])
      

      如果您使用的是 XPath 1.0,那么您必须在调用 substring-after() 之前检查 XSLT(或您正在使用的任何东西)中的字符串。例如:

      <xsl:choose>
          <xsl:when test="contains(div/span[2], '|')">
              <xsl:value-of select="substring-after(string(div/span[2]),'|')"/>
          </xsl:when>
          <xsl:otherwise>
              <xsl:value-of select="div/span[2]"/>
          </xsl:otherwise>
      </xsl:choose>
      

      【讨论】:

      • 是否可以在单个 xpath 中使用? .我正在使用 xpath 1.0。
      • 没有。如果您使用的是 XPath 1.0,则必须在调用 substring-after() 之前检查代码中的字符串。
      猜你喜欢
      • 2019-03-09
      • 1970-01-01
      • 2023-01-30
      • 1970-01-01
      • 2022-06-14
      • 2020-08-11
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      相关资源
      最近更新 更多