我正在使用XPATH,Java并希望从一个HTML页面中提取一些文本。 该文本是位于一些div之间的一些空白字符之间,如
<br>
等 我希望这些被分别转换为'空间'和'换行'提取。 我用来提取文本的方法是Element.getTextContent(),它不尊重空格字符。getTextContent从节点与空白字符标准化
有人可以告诉我,如果有一种方法来提取文本与空白标准化 或 提取整个HTML标记下的'节点',以便我可以自己替换它。 谢谢 Nayn
我正在使用XPATH,Java并希望从一个HTML页面中提取一些文本。 该文本是位于一些div之间的一些空白字符之间,如
<br>
等 我希望这些被分别转换为'空间'和'换行'提取。 我用来提取文本的方法是Element.getTextContent(),它不尊重空格字符。getTextContent从节点与空白字符标准化
有人可以告诉我,如果有一种方法来提取文本与空白标准化 或 提取整个HTML标记下的'节点',以便我可以自己替换它。 谢谢 Nayn
<br>不是文本内容,它是一个元素。我不确定你在找什么。尝试访问元素下面的所有文本节点(记住递归检查元素子元素)并调用getNodeValue();
这个很简单。问题在于,getTextContent连接了所有字符串,忽略 和
。我写了一个小的递归方法,在文本之间插入空格。谢谢。 –
Nayn
2010-05-21 14:35:49
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>
这对我未来的需求很有用。谢谢。 – Nayn 2010-05-21 14:36:39
好问题(+1)。查看我的答案获得完整的解决方案。 – 2010-05-21 13:46:06