如何查找子字符串是否具有 XPath 1.0

问题描述 投票:0回答:1

我在尝试在 XPATH 1.0 中查找特定子字符串时遇到问题。该表达式将在代码审查工具SonarQube中用于设置约束。

这是我目前在 XPATH 3.0 中的表达式,我已经做了一些研究来找到转换,但看起来这个表达式的语法在 XPATH 3.0 中是正确的,就像在 1.0 中一样。我是否忽略了某些事情或只是误导了

//*[contains(.,'@example.com')]

据我了解,这使用 XPATH 1.0 原生的 contains() 函数来搜索其之前的任何

/descendant-or-self::node()/
路径以包含属性
example.com

xml xpath sonarqube xpath-1.0
1个回答
3
投票

//*[contains(.,'@example.com')]
表示 “查找包含子字符串 '@example.com' 的 文本内容 的任何类型的节点”。如果您想“查找具有属性且其值中包含‘@example.com’的节点”,您需要:

  • any 属性中:

    //*[contains(@*, "@example.com")]
    
  • 特定属性中:

    //*[contains(@email, "@example.com")]
    

如果您想获得所需的值

@attribute
:

//*[contains(@email, "@example.com")]/@email
© www.soinside.com 2019 - 2024. All rights reserved.