我正在尝试从html页面中提取文本内容,如下所示:
<div class="content">
<div class="section">
Lorem <a href="..." class="link">ipsum</a>
dolor <a href="..." class="link">sit</a> amet,
consectetur <a href="..." class="link">adipiscing</a> elit
</div>
<div class="section">
sed do <a href="..." class="link">eiusmod</a> tempor
incididunt <a href="..." class="link">ut</a> labore
et <a href="..." class="link">dolore</a>
</div>
</div>
我只想提取文字部分:
Lorem ipsum dolor amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
我的XPath(2.0)表达式为//*[contains(@class, 'section')]
。当我使用javax.xml.xpath.XPathExpression
评估它时,我只检索链接之外的文本:
Lorem dolor amet, consectetur elit, sed do tempor incididunt labore et
我之前没有使用过XPath - 是否有更好的表达式来提取全文?感谢。
答案 0 :(得分:3)
您的表达式返回一个完整的XML元素。然后,处理器通过将XML元素转换为文本将其作为字符串返回,因此基本上与执行时相同
//*[contains(@class, 'section')]/text()
相反,您可以使用string()
函数获取子项中的所有文本元素:
//*[contains(@class, 'section')]/string()
另一种方式,正如MathiasMüller在评论中指出的那样,将使用
//*[contains(@class, 'section')]//text()
返回所有后代或自我文本元素。