【问题标题】:Getting a substring of an attribute in XPATH在 XPATH 中获取属性的子字符串
【发布时间】:2011-05-18 08:17:54
【问题描述】:

给定

<foo>
  <bar baz="Hello, World!">
</foo>

除了@baz 的最后 4 个字符之外,我如何处理?我的尝试之一是:

/foo/bar/@baz[substring( ., 0, -4 )]

【问题讨论】:

  • 好问题,+1。到目前为止,请参阅我的答案以获取唯一正确的解决方案。 :)

标签: string xpath substring


【解决方案1】:

这实际上还不错,但是 IIRC 子字符串不喜欢负索引。我试过了

substring(/foo/bar/@baz, string-length(/foo/bar/@baz)-4)

这给了我预期的结果。

【讨论】:

    【解决方案2】:

    使用

    substring(/foo/bar/@baz, string-length(/foo/bar/@baz)-3) 
    

    请注意表达式中的3

    以下错误

    substring(/foo/bar/@baz, string-length(/foo/bar/@baz)-4) 
    

    因为这会返回 baz 属性的字符串值的最后 5 个字符。

    【讨论】:

    • @Volkirith,问题中的短语“除了最后 4 个字符之外我怎么做”是模棱两可的 - 也许它的意思是“我如何跳过除了最后一个字符4 个字符”在这种情况下,答案是正确的。我们不能确定,但​​答案被接受的事实有点证实了这个猜测。当然,如果反过来(您在评论中建议的含义)。解决方案很简单:substring(/foo/bar/@baz, 1, string-length(/foo/bar/@baz)-3) 请注意,最近版主和其他人一直在“纠正”问题——导致这个混乱:(
    【解决方案3】:

    试试这个: substring-before(/foo/bar/@baz,"rld!")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 2020-09-29
      相关资源
      最近更新 更多