2010-08-31 12 views
18

friend's Devo analizzare la descrizione dall'URL, dove il contenuto analizzato ha pochi tag html, quindi come posso convertirlo in testo normale.come convertire il testo HTML in testo normale?

+0

Quali sono i requisiti precisi? Hai bisogno di rimuovere i tag HTML? Estrai il contenuto di un tag specifico? –

+0

posso in grado di estrarre il contenuto, ma il contenuto hanno

ZCC dsdfsf ddfdfsf

sfdfdfdfdf, come sopra sto ottenendo i miei dati, ma ho bisogno di essere un semplice pianura text.without questi tag html – MGSenthil

+0

domanda simile con buona risposta qui: http://stackoverflow.com/questions/1518675/open-source-java-library-for-html-to-text-conversion/1519726#1519726. Ho usato Jericho e funziona bene. –

risposta

1

mi consiglia l'analisi del codice HTML grezzo attraverso jTidy che dovrebbe dare uscita che è possibile scrivere espressioni XPath. Questo è il modo più efficace che ho trovato di raschiare l'HTML.

16

Basta sbarazzarsi di tag HTML è semplice:

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

Ma purtroppo i requisiti non sono mai così semplici:

Di solito, <p> e <div> elementi hanno bisogno di una gestione separata, ci possono essere blocchi CDATA con > caratteri (ad es. Javascript) che confondono la regex ecc.

+1

bene che hai chiarito tutta quella complessità! – ankitjaininfo

+0

Per un po 'di background sul motivo per cui questo non funzionerà nel caso generale, e non sarà f (u | oo) l-proof: [RegEx match tag aperti tranne i tag XHTML autonomi] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) –

6

È possibile utilizzare questa singola riga per rimuovere i tag html e visualizzarla come testo normale.

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

Se si vuole analizzare come la visualizzazione del browser, utilizzare:

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); 
    } 
} 

Spero che questo vi aiuterà ad analizzare tavolo anche nel formato browser.

Grazie, Ganesh

+0

I downvoters possono spiegare perché fanno downvote? – koppor

Problemi correlati