如何在 XPATH 1.0 中查找 special/escape 个字符

How to look for special/escape characters in XPATH 1.0

我正在使用名为 SonarQube 的开源代码审查工具。此应用程序允许根据您希望如何应用和审查这些规则来定制特定的编程约束,以判断失败或通过。

我正在进行代码审查以格式化并在 XML 路径中寻找 errors/bugs/vulnerabilities。我在尝试捕捉这些路径中的特殊字符时遇到问题

例如,此 XPATH 1.0 表达式用于在位置属性

中查找 'http'
//definitions/service/port/address[contains(@location,'http')]

此表达式将 return 为真,因为它找到 http。然而,

//definitions/service/port/address[contains(@location,'http:')]

这个表达式 return 不正确,因为我认为字符 : 导致某些内容被误解。

下面是我进行测试的一些示例代码。在这种情况下是否可以使用此字符或特殊字符?

<definitions>
    <service >
       <port>
          <address location="http://example.com"/>
        </port>
     </service>
</definitions>

XPath 中的字符串文字中的 : 字符没有什么特别之处。

两个 XPath 表达式都将 return address 元素显示在 XML 文档中。如果 SonarQube 的行为与此不同(可能但不太可能),那么它似乎是 SonarQube 的问题。

在尝试提供最小 MCVE 时,您可能无意中减少了实际问题的重要方面。