如何在使用 Xpath 进行文本匹配时忽略双空格

how to ignore double white-spaces during text matching using Xpath

我有这样的 html 代码:

<div class="main">
     <div class ="first">
        <p>just text</p>
                      </div>
     <div class= "second">
        <p>some text</p>
                      </div>
     <div class= "third">
        <p>some  text having double white-space</p>
                      </div>
</div>

并像这样使用 Xpath://div/p[contains(text(),'some text')] 但不幸的是,元素 p 内 "some text" 的任何地方都可以是双空格。所以我需要在这个匹配过程中忽略它们。我知道我可以像这样使用 Xpath 表达式 translate(normalize-space(//div/p), ' ', '') 但它会找到所有元素 p 并且只替换双空格而不匹配 "some text"! 是否可以匹配 "some text" 但同时忽略双空格?

当使用 XPath 1.0 selecting 一组节点时,XPath 无法更改结果中 returned 的节点。您只能 select 个节点,因为它们已经存在。在执行 selection 时,您可以使用以下命令忽略双空格:

//div/p[contains(normalize-space(), 'some text')]

这将 return 您要查找的 p 组,但它们的文本内容将保持原样。如果您随后想获得没有重复空格的文本值,您可以遍历此节点集并从值中逐一去除空格。您还没有告诉我们任何有关您用于执行这些查询的代码的信息,因此很难准确地告诉您您将如何修改代码来执行此操作。如果您可以向我们展示您的代码,我可以向您展示如何让它执行您需要的操作。