对于常规 HTML
<b>WordA WordB WordC</b>
Run Code Online (Sandbox Code Playgroud)
我会使用这个 XPath 来检索这个元素。
//b[text()='WordA WordB WordC']
Run Code Online (Sandbox Code Playgroud)
但我有以下 HTML
<b>WordA WordB WordC</b>
Run Code Online (Sandbox Code Playgroud)
当我尝试检索此实例中的元素时,第一个 XPath 不返回任何内容。
//b[text()='WordA\u00a0WordB\u00a0WordC']
Run Code Online (Sandbox Code Playgroud)
以上一个作品。
但是,有没有更好的方法来处理这种情况,而不是使用 '\u00a0' 部分。一些定义的函数来规范化空间。
等等:
//b[someFunction()='WordA WordB WordC']
Run Code Online (Sandbox Code Playgroud)
请注意,这是\u00a0
有效的,因为您的 XPath 表达式嵌入在识别转义序列的某些宿主语言(例如 Java 或 Javascript)中uNNNN
- 这是由包含的宿主语言而不是 XPath 本身转换为 NBSP 字符。如果 XPath 嵌入在 XML 中(例如在 XSLT 或 XSD 中),您将使用 
而不是\u00a0
.
在 XPath 中没有处理 NBSP 的特殊方法,但您可以使用 translate() 将这些字符转换为常规空格:
//b[translate(text(), '\u00a0', ' ') = 'WordA WordB WordC']
Run Code Online (Sandbox Code Playgroud)
另请注意,在此类表达式中,通常最好使用.
而不是text()
访问元素的字符串值。这对可能出现的变化更有弹性,例如斜体字之一,或由注释分隔的字词。
归档时间: |
|
查看次数: |
167 次 |
最近记录: |