2010-08-31 36 views
18

amigo Tengo que analizar la descripción de la url, donde el contenido analizado tiene pocas etiquetas html, así que ¿cómo puedo convertirlo a texto sin formato.cómo convertir texto HTML a texto sin formato?

+0

¿Cuáles son sus requisitos precisos? ¿Necesita quitar etiquetas HTML? Extrae el contenido de una etiqueta específica? –

+0

puedo capaz de extraer el contenido, pero el contenido tiene

zcc dsdfsf ddfdfsf

sfdfdfdfdf, como el de arriba me estoy poniendo mis datos pero necesito ser un simple llano text.without esas etiquetas html – MGSenthil

+0

pregunta similar con buena respuesta aquí: http://stackoverflow.com/questions/1518675/open-source-java-library-for-html-to-text-conversion/1519726#1519726. Usé Jericho y funciona bien. –

Respuesta

1

lo recomiendo analizar el HTML puro a través jTidy que debería darle salida que se puede escribir expresiones XPath. Esta es la forma más robusta que he encontrado de raspar HTML.

16

Sólo deshacerse de las etiquetas HTML es simple:

// replace all occurrences of one or more HTML tags with optional 
// whitespace inbetween with a single space character 
String strippedText = htmlText.replaceAll("(?s)<[^>]*>(\\s*<[^>]*>)*", " "); 

Pero, por desgracia los requisitos no son tan simples:

Por lo general, <p> y <div> elementos necesitan un manejo separado, puede haber bloques CDATA con > caracteres (p. Ej., Javascript) que estropean la expresión regular, etc.

+1

¡Bien, aclaraste toda esa complejidad! – ankitjaininfo

+0

Para obtener información general sobre por qué esto no funcionará para el caso general, y no será f (u | oo) l-proof: [Etiquetas abiertas de ajuste de RegEx excepto etiquetas autocontenidas XHTML] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) –

6

Puede utilizar esta única línea para eliminar las etiquetas html y mostrarla como texto sin formato.

htmlString=htmlString.replaceAll("\\<.*?\\>", ""); 
0

Si desea analizar como en la pantalla del navegador, utilice:

import net.htmlparser.jericho.*; 
import java.util.*; 
import java.io.*; 
import java.net.*; 

public class RenderToText { 
    public static void main(String[] args) throws Exception { 
     String sourceUrlString="data/test.html"; 
     if (args.length==0) 
      System.err.println("Using default argument of \""+sourceUrlString+'"'); 
     else 
      sourceUrlString=args[0]; 
     if (sourceUrlString.indexOf(':')==-1) sourceUrlString="file:"+sourceUrlString; 
     Source source=new Source(new URL(sourceUrlString)); 
     String renderedText=source.getRenderer().toString(); 
     System.out.println("\nSimple rendering of the HTML document:\n"); 
     System.out.println(renderedText); 
    } 
} 

espero que esto ayudará a analizar tabla también en el formato de navegador.

Gracias, Ganesh

+0

¿Pueden los downvoters explicar por qué votaron negativamente? – koppor

Cuestiones relacionadas