我正在使用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