getTextContent от Node с нормализацией пробельных символов - PullRequest
2 голосов
/ 21 мая 2010

Я работаю с XPATH, Java и хочу извлечь текст из одной HTML-страницы. Текст находится под некоторым div с несколькими пробельными символами между ними, например &nbsp; <br> и т. Д. Я хочу, чтобы они были преобразованы в 'space' и 'newline' соответственно при извлечении. Метод, который я использую для извлечения текста, это Element.getTextContent (), который не учитывает пробельные символы.

Может кто-нибудь сказать мне, если есть способ извлечь текст с нормализацией пробелов ИЛИ ЖЕ Извлеките всю HTML-разметку под «Узлом», чтобы я мог заменить ее самостоятельно. Спасибо Найн

Ответы [ 2 ]

1 голос
/ 21 мая 2010


это не текстовый контент, это элемент. Я не уверен, что ты ищешь. Попробуйте просто посетить все текстовые узлы под элементом (не забывая рекурсивно проверять дочерние элементы) и вызвать getNodeValue ();

1 голос
/ 21 мая 2010

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>

когда это преобразование применяется к следующему документу XML:

<p>&#xA0;<br/></p>

желаемый результат получен :

<p> 

</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...