2012-05-06 22 views
6

codificación Im en Java ..obtener toda HTML como una cadena de HTMLDocument

¿Alguien sabe cómo puedo obtener el contenido de un javax.swing.text.html.HTMLDocument como una cadena? Esto es lo que he conseguido hasta ahora ...

URL url = new URL("http://www.test.com"); 

HTMLEditorKit kit = new HTMLEditorKit(); 
HTMLDocument doc = (HTMLDocument) kit.createDefaultDocument(); 
doc.putProperty("IgnoreCharsetDirective", Boolean.TRUE); 
Reader HTMLReader = new InputStreamReader(url.openConnection().getInputStream()); 
kit.read(HTMLReader, doc, 0); 

necesito el contenido de la HTMLDocument como una cadena.

Ejemplo:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html><head><meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"> 

....... etc.

Cualquier ayuda sería apreciada. Necesito utilizar la clase HTMLDocument para que el HTML para ser procesada correctamente :)

Gracias Daniel

Respuesta

12
StringWriter writer = new StringWriter(); 
kit.write(writer, doc, 0, doc.getLength()); 
String s = writer.toString(); 
+0

Gracias! ¡El código de Joop Eggens hizo el truco! – Zelleriation

1

No es necesario el editor y el lector en absoluto - sólo leer el flujo de entrada. Por ejemplo, con commons-io IOUtils.toString(inputStream)

o puede utilizar:

Content content = document.getContent(); 
String str = content.getString(0, content.length() - 1); 
+0

Esto no funcionará porque el método heredado [getContent] (http://docs.oracle.com/javase/7/docs/api/javax/swing/text/AbstractDocument.html#getContent%28%29) está protegido . – vallismortis

Cuestiones relacionadas