Java 使用空格字符规范化从节点获取文本内容
我正在使用XPATH和Java,希望从一个html页面中提取一些文本。 文本位于某些div下,中间有一些空白字符,如Java 使用空格字符规范化从节点获取文本内容,java,xslt,xpath,Java,Xslt,Xpath,我正在使用XPATH和Java,希望从一个html页面中提取一些文本。 文本位于某些div下,中间有一些空白字符,如等。 我希望在提取时将它们分别转换为“space”和“newline”。 我用来提取文本的方法是Element.getTextContent(),它不考虑空格字符 有没有人能告诉我有没有一种方法可以用空白规范化来提取文本 或 提取“节点”下的整个html标记,以便我自己替换它。 谢谢 NaynXPath不能用字符串替换节点 一个简单的XSLT转换可以完成这项任务 例如: <x
等。 我希望在提取时将它们分别转换为“space”和“newline”。 我用来提取文本的方法是Element.getTextContent(),它不考虑空格字符 有没有人能告诉我有没有一种方法可以用空白规范化来提取文本 或 提取“节点”下的整个html标记,以便我自己替换它。 谢谢
NaynXPath不能用字符串替换节点 一个简单的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>
<p>
</p>
当此转换应用于以下XML文档时:
<p> <br/></p>
和#xA0
产生所需结果:
<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>
<p>
</p>
不是文本内容,而是元素。我不知道你在找什么。尝试访问元素下的所有文本节点(记住递归检查元素子元素)并调用getNodeValue() 好问题(+1)。请看我的答案以获得完整的解决方案。这个答案很简单。问题是,getTextContent连接所有忽略和
的字符串。我写了一个小的递归方法,在文本之间插入空格。谢谢。这对我将来的需要很有用。谢谢