我正在使用XPATH,Java并希望从一个html页面中提取一些文本。
文本位于某个div下面,其间有一些空白字符,例如
<br>
等。
我希望这些在提取时分别转换为'space'和'newline'。
我用来提取文本的方法是Element.getTextContent(),它不尊重空白字符。
有人可以告诉我是否有办法用空格规范化提取文本 要么 在'Node'下提取整个html标记,以便我可以自己替换它。 谢谢 Nayn
答案 0 :(得分:1)
XPath无法用字符串替换节点。
简单的XSLT转换可以执行此任务。
例如:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="translate(.,' ', ' ')"/>
</xsl:template>
<xsl:template match="br">
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
将此转换应用于以下XML文档时:
<p> <br/></p>
生成了想要的结果:
<p>
</p>
答案 1 :(得分:1)
&LT峰; br&GT;不是文本内容,它是一个元素。我不确定你在找什么。尝试访问元素下面的所有文本节点(记住以递归方式检查元素子元素)并调用getNodeValue();