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.
Deja una respuesta