Java 使用空格字符规范化从节点获取文本内容

Java 使用空格字符规范化从节点获取文本内容,java,xslt,xpath,Java,Xslt,Xpath,我正在使用XPATH和Java,希望从一个html页面中提取一些文本。 文本位于某些div下,中间有一些空白字符,如等。 我希望在提取时将它们分别转换为“space”和“newline”。 我用来提取文本的方法是Element.getTextContent(),它不考虑空格字符 有没有人能告诉我有没有一种方法可以用空白规范化来提取文本 或 提取“节点”下的整个html标记,以便我自己替换它。 谢谢 NaynXPath不能用字符串替换节点 一个简单的XSLT转换可以完成这项任务 例如: <x

我正在使用XPATH和Java,希望从一个html页面中提取一些文本。 文本位于某些div下,中间有一些空白字符,如

等。 我希望在提取时将它们分别转换为“space”和“newline”。 我用来提取文本的方法是Element.getTextContent(),它不考虑空格字符

有没有人能告诉我有没有一种方法可以用空白规范化来提取文本 或 提取“节点”下的整个html标记,以便我自己替换它。 谢谢
Nayn

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(.,'&#xA0;', ' ')"/>
 </xsl:template>

 <xsl:template match="br">
   <xsl:text>&#10;</xsl:text>
 </xsl:template>
</xsl:stylesheet>
<p> 

</p>



当此转换应用于以下XML文档时:

<p>&#xA0;<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(.,'&#xA0;', ' ')"/>
 </xsl:template>

 <xsl:template match="br">
   <xsl:text>&#10;</xsl:text>
 </xsl:template>
</xsl:stylesheet>
<p> 

</p>



不是文本内容,而是元素。我不知道你在找什么。尝试访问元素下的所有文本节点(记住递归检查元素子元素)并调用getNodeValue()

好问题(+1)。请看我的答案以获得完整的解决方案。这个答案很简单。问题是,getTextContent连接所有忽略和
的字符串。我写了一个小的递归方法,在文本之间插入空格。谢谢。这对我将来的需要很有用。谢谢