Crear un Documento XML con DOM en Java: Ejemplo Práctico Paso a Paso
Crear un documento XML con DOM en Java
// Paquetes necesarios para trabajar XML mediante DOM
import javax.xml.parsers.*;import org.w3c.dom.*;
// Paquetes necesarios para guardar el árbol DOM que está en memoria en un fichero físico XML
import java.io.File;import javax.xml.transform.*;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;
// Cargar excepciones necesarias
public class XML_FicheroNuevo {
private static DocumentBuilderFactory dbf;private static DocumentBuilder db;private static Document doc;private static Element elementoRaiz;private static Element elementoNuevo;private static Transformer xformer;private static Source source;private static Result result;
public static void main(String[] args) {
// Cargo el Factory (entorno) de DOM
dbf = DocumentBuilderFactory.newInstance();
// Cargo el procesador DOM
try {
db = dbf.newDocumentBuilder();
} catch (ParserConfigurationException e) {
System.out.println("Error cargando procesador DOM");
e.printStackTrace();
}
/*
* Para crear un documento XML nuevo con su árbol DOM se hace a partir del DocumentBuilder.
* Para ello utilizamos el método newDocument().
*/
doc = db.newDocument();
/*
* Todo elemento nuevo en el árbol DOM se crea a partir del Document.
* Para ello utilizamos el método createElement(), que tiene como parámetro el nombre de la etiqueta XML.
*/
elementoRaiz = doc.createElement("alumnos");
/*
* El elemento raíz debe ser hijo del Document. Para indicar que una etiqueta es hija de otra utilizamos el método appendChild().
* En este caso no le añadimos ni texto ni atributos.
*/
doc.appendChild(elementoRaiz);
/* Vamos a crear otro elemento nuevo EN EL ÁRBOL DOM */
elementoNuevo = doc.createElement("alumno");
/*
* Le asignamos contenido, atributos, etc. al nuevo elemento. En nuestro caso le añadimos un texto y un atributo.
*/
elementoNuevo.setTextContent("Juan Sanchez");
elementoNuevo.setAttribute("nMatricula", "2000/1234");
/*
* Lo asignamos como hijo de otro elemento. En nuestro caso, será hijo del elemento raíz.
*/
elementoRaiz.appendChild(elementoNuevo);
/* Transformamos el árbol XML DOM que está en memoria en un fichero físico */
try {
xformer = TransformerFactory.newInstance().newTransformer();
} catch (TransformerConfigurationException | TransformerFactoryConfigurationError e) {
e.printStackTrace();
}
/*
* Propiedades del fichero XML de salida
*/
xformer.setOutputProperty(OutputKeys.METHOD, "xml");
xformer.setOutputProperty(OutputKeys.INDENT, "yes");
/* Definimos la entrada y la salida de la transformación */
source = new DOMSource(doc);
result = new StreamResult(new File("NUEVO.xml"));
/* Realizamos la transformación mediante el método transform() */
try {
xformer.transform(source, result);
} catch (TransformerException e) {
e.printStackTrace();
}
}
}