2009-10-05 8 views
17

Me puede recomendar una biblioteca de código abierto de Java (preferiblemente ASL/BSD/LGPL) que convierte HTML para llanura texto - limpia todas las etiquetas, convierte entidades (&,  , etc.) y maneja <br> y tablas correctamente.biblioteca de código abierto de Java para el HTML al texto conversión

Más información

tengo el HTML como una cadena, no hay necesidad de buscarla a la web. Además, lo que busco es para un método como este:

String convertHtmlToPlainText(String html) 
+1

También se menciona [jsoup] (http://jsoup.org/) [aquí] (http://stackoverflow.com/questions/9631477/retrieve-text-from-html-file-in-java), que se distribuye bajo la licencia liberal [MIT] (http://jsoup.org/license). – cubanacan

+0

Por cierto, jsoup admite HTML5 – cubanacan

+0

Al menos según la documentación, no hace lo que le pedí (convierta la página a texto sin formato, NO a manipulación de HTML) –

Respuesta

17

Probar Jericho.

La clase TextExtractor parece que hará lo que usted quiera. Lo siento, no puedo publicar un segundo enlace ya que soy un nuevo usuario, pero me desplazo un poco hacia abajo en la página de inicio y hay un enlace a él.

+0

Aquí está el enlace a esa clase: http://jericho.htmlparser.net/docs/javadoc/net/htmlparser/jericho/TextExtractor.html –

+5

¡Gracias! De hecho, utilicé el Renderer al final –

+0

Para el perezoso: 'String plainText = new Source (html) .getRenderer(). ToString();' –

3

HtmlUnit, incluso se muestra la página después de procesar JavaScript/Ajax.

+0

Veo cómo me da la respuesta como HTML, no como texto –

+0

Comprueba .asText() [http://htmlunit.sourceforge.net/apidocs/com/gargoylesoftware/ htmlunit/html/DomNode.html # asText()] –

+0

Gracias. Fui a Jericó al final, pero voy a tener en cuenta HtmlUnit –

0

Uso TagSoup, está disponible para varios idiomas y hace un muy buen trabajo con HTML que se encuentra "en la naturaleza". Produce una versión limpia del HTML o XML, que luego puede procesar con un analizador DOM/SAX.

+0

Gracias, pero necesito el resultado final en texto sin formato –

+0

Una vez que está en XML, puede implementar un analizador SAX para generar solo los nodos de texto (p.una implementación de DefaultHandler no-op de todos los métodos, aparte de 'characters') –

-1

He usado Apache Commons Lang para ir por el otro camino. Pero parece que puede hacer lo que necesita a través del StringEscapeUtils.

+0

No puedo encontrar ningún método htmlToText() - hay escape del HTML métodos para que "hola" se convertirá a "<b> hola </b >" en lugar de "hola" –

+0

Ahh, sí, no vi que quería texto plano. Esto es verdad. – firefly2442

1

El motor bliki puede hacer esto, en dos pasos. Ver info.bliki.wiki/Home

  1. Cómo convertir el HTML al texto Mediawiki - texto nediawiki ya es un formato de texto bastante sencillo, pero se puede convertir más
  2. Cómo convertir texto a texto sin formato Mediawiki - su objetivo.

Se habrá algunas 7-8 líneas de código, así:

// html to wiki 
import info.bliki.html.HTML2WikiConverter; 
import info.bliki.html.wikipedia.ToWikipedia; 
// wiki to plain text 
import info.bliki.wiki.filter.PlainTextConverter; 
import info.bliki.wiki.model.WikiModel; 
... 
String sbodyhtml = readFile(infilepath); //get content as string 
    HTML2WikiConverter conv = new HTML2WikiConverter(); 
    conv.setInputHTML(sbodyhtml); 
String resultwiki = conv.toWiki(new ToWikipedia()); 
    WikiModel wikiModel = new WikiModel("${image}", "${title}"); 
String plainStr = wikiModel.render(new PlainTextConverter(false), resultwiki); 
System.out.println(plainStr); 

Jsoup puede hacer esto más simple:

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
... 
Document doc = Jsoup.parse(sbodyhtml); 
String plainStr = doc.body().text(); 

pero en el resultado se pierde todo el formato de párrafo - - No habrá nuevas líneas.

Cuestiones relacionadas