Crear XML en Java

Hola a todos, hoy os voy a explicar como crear un XML en Java.

En java, podemos crear nuestros propios XML para luego tratarlos.

Primero, tenemos que crear un objeto Document que sera el que haga el trabajo, pero antes debemos hacer lo siguiente:


// Creo una instancia de DocumentBuilderFactory
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// Creo un documentBuilder
DocumentBuilder builder = factory.newDocumentBuilder();
// Creo un DOMImplementation
DOMImplementation implementation = builder.getDOMImplementation();

Ahora si puedo crear el objeto Document que comentaba:


// Creo un documento con un elemento raiz
Document documento = implementation.createDocument(null, "concesionario", null);
documento.setXmlVersion("1.0");

He puesto estos null, ya que el namespace y el doctype, no es necesario, si lo necesitas, puedes añadirlos. La cadena concesionario es el elemento raiz.

 

Con este objeto Document, ahora podemos crear elementos o etiquetas XML. Crearemos primero uno que almacene los coches, aprovechamos y creamos uno para un coche individual:


// Creo los elementos
Element coches = documento.createElement("coches");
Element coche = documento.createElement("coche");

Ahora creamos elementos hijos para nuestro coche, os pongo un pequeño ejemplo con la matricula:


// Matricula
Element matricula = documento.createElement("matricula");
Text textMatricula = documento.createTextNode("1111AAA");
matricula.appendChild(textMatricula);
coche.appendChild(matricula);

Creo el elemento, despues creo otro elemento de texto (Text), indico que el texto es hijo del elemento matricula y añado el elemento matricula como hijo del elemento coche.

Hacemos lo mismo con marca y precio:


// Marca
Element marca = documento.createElement("marca");
Text textMarca = documento.createTextNode("AUDI");
marca.appendChild(textMarca);
coche.appendChild(marca);

// Precio
Element precio = documento.createElement("precio");
Text textPrecio = documento.createTextNode("30000");
precio.appendChild(textPrecio);
coche.appendChild(precio);

Ahora debemos añadir el coche como hijo del elemento coches. También debemos añadir coches al elemento raíz (concesionario)

 


// Añado al elemento coches el elemento coche
coches.appendChild(coche);

// Añado al root el elemento coches
documento.getDocumentElement().appendChild(coches);

¿Con esto hemos acabado? No, nos falta crear el fichero XML en sí.


// Asocio el source con el Document
Source source = new DOMSource(documento);
// Creo el Result, indicado que fichero se va a crear
Result result = new StreamResult(new File("concesionario.xml"));

// Creo un transformer, se crea el fichero XML
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(source, result);

Tened en cuenta que os pueden saltar excepciones. Precaución al importar clases podéis equivocaros.

Aquí os dejo el ejemplo completo:


import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;

public class CrearXML{

    public static void main(String[] args) {

        try {
            // Creo una instancia de DocumentBuilderFactory
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            // Creo un documentBuilder
            DocumentBuilder builder = factory.newDocumentBuilder();
            // Creo un DOMImplementation
            DOMImplementation implementation = builder.getDOMImplementation();

            // Creo un documento con un elemento raiz
            Document documento = implementation.createDocument(null, "concesionario", null);
            documento.setXmlVersion("1.0");

            // Creo los elementos
            Element coches = documento.createElement("coches");
            Element coche = documento.createElement("coche");

            // Matricula
            Element matricula = documento.createElement("matricula");
            Text textMatricula = documento.createTextNode("1111AAA");
            matricula.appendChild(textMatricula);
            coche.appendChild(matricula);

            // Marca
            Element marca = documento.createElement("marca");
            Text textMarca = documento.createTextNode("AUDI");
            marca.appendChild(textMarca);
            coche.appendChild(marca);

            // Precio
            Element precio = documento.createElement("precio");
            Text textPrecio = documento.createTextNode("30000");
            precio.appendChild(textPrecio);
            coche.appendChild(precio);

            // Añado al elemento coches el elemento coche
            coches.appendChild(coche);

            // Añado al root el elemento coches
            documento.getDocumentElement().appendChild(coches);

            // Asocio el source con el Document
            Source source = new DOMSource(documento);
            // Creo el Result, indicado que fichero se va a crear
            Result result = new StreamResult(new File("concesionario.xml"));

            // Creo un transformer, se crea el fichero XML
            Transformer transformer = TransformerFactory.newInstance().newTransformer();
            transformer.transform(source, result);

        } catch (ParserConfigurationException | TransformerException ex) {
            System.out.println(ex.getMessage());
        }

    }

}

Espero que os sea de ayuda. Si tenéis dudas, preguntad. Estamos para ayudarte.

Compartir

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *