Crear un árbol HTML en Java usando el API DOM
En los post anteriores vimos cómo descargar una página HTML desde la web a nuestor disco duro, o mantenerla en memoria almacenada en un String.
En este y en los próximos post vamos a ver ejemplos de uso y manipulación de un árbol HTML/XML en Java, mediante la interfaz de programación DOM (Document Object Model).
El uso del DOM es moneda corriente en los navegadores mediante JavaScript, pero a veces se desconoce la posibilidad de usarlo en aplicaciones Java.
Hoy veremos cómo crear un árbol HTML, que se engloba dentro de la clase Document, a partir de un fichero HTML y cómo guardarlo.
* Método que recibe un archivo de texto xml, y lo almacena en un Document
* @param filename Archivo a leer
* @return Document Con la estructura de árbol DOM del fichero XML/HTML.
*/
public static Document readFile(String filename) {
try {
//Obtenemos la factoría de contrustores de documentos
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//Obtenemos un nuevo contructor y le ordenamos que analice el fichero deseado
Document doc = factory.newDocumentBuilder().parse(new File(filename));
return doc;
} catch (java.lang.Exception e) {
}
return null;
}
/**
* Método que recibe un Document con la esctructura de un archivo XML/HTML y una
* ruta en donde guardarlo. Y almacena la estructura XML/HTML en el archivo dado.
*
* @param doc Árbol DOM con la estructura XML/HTML
* @param filemane Ruta del archivo en donde se guardará
*/
private static boolean writeFile(Document doc, String filename) {
try {
Source source = new DOMSource(doc);
File file = new File(filename);
Result result = new StreamResult(file);
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(source, result);
return true;
} catch (java.lang.Exception e) {
}
return false;
}
Clase de I/O para DOM
En este fichero se encuentran las 2 funciones, metidas en una clase con todos los import que hacen falta. [link]
Enhorabuena por la web!,, los ejemplos son muy útiles!!!
A ver si escribes mas peter!!!
Gracias! algo así estaba buscando