Crear fichero XML desde JAVA

Crear fichero XML desde JAVA
tutorialxml

¡Hola a todos! en este tutorial vamos a aprender a crear un fichero. Lo que pretendemos enseñar a crear un fichero xml con la siguiente estructura: XML con ayuda de JAVA.

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <geekyxml> <ITEM> <KEY> opcion1 </KEY> <VALUE> 22 </VALUE> </ITEM> <ITEM> <KEY> opcion2 </KEY> <VALUE> 22 </VALUE> </ITEM> <ITEM> <KEY> opcion3 </KEY> <VALUE> 22 </VALUE> </ITEM> <ITEM> <KEY> opcion4 </KEY> <VALUE> 25 </VALUE> </ITEM> </geekyxml>

Observamos que la etiqueta principal del XML es geekyxml, dentro de esta podemos observar que tenemos X items con dos llaves KEY y VALUE, es decir vamos a usar una clave y valor para nuestra estrutura xml.

El código que genera el siguiente xml en java es el siguiente:

package xmlgenerator; import java.util.ArrayList; import java.util.logging.Level; import java.util.logging.Logger; 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.TransformerConfigurationException; 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 XMLGenerator { public static void main(String[] args) { String nombre_archivo = "geekyxml"; ArrayList key = new ArrayList(); ArrayList value = new ArrayList(); key.add("opcion1"); value.add("22"); key.add("opcion2"); value.add("22"); key.add("opcion3"); value.add("22"); key.add("opcion4"); value.add("25"); try { generate(nombre_archivo, key, value); } catch (Exception e) {} } public static void generate(String name, ArrayList<String> key,ArrayList<String> value) throws Exception{ if(key.isEmpty() || value.isEmpty() || key.size()!=value.size()){ System.out.println("ERROR empty ArrayList"); return; }else{ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); DOMImplementation implementation = builder.getDOMImplementation(); Document document = implementation.createDocument(null, name, null); document.setXmlVersion("1.0"); //Main Node Element raiz = document.getDocumentElement(); //Por cada key creamos un item que contendrá la key y el value for(int i=0; i<key.size();i++){ //Item Node Element itemNode = document.createElement("ITEM"); //Key Node Element keyNode = document.createElement("KEY"); Text nodeKeyValue = document.createTextNode(key.get(i)); keyNode.appendChild(nodeKeyValue); //Value Node Element valueNode = document.createElement("VALUE"); Text nodeValueValue = document.createTextNode(value.get(i)); valueNode.appendChild(nodeValueValue); //append keyNode and valueNode to itemNode itemNode.appendChild(keyNode); itemNode.appendChild(valueNode); //append itemNode to raiz raiz.appendChild(itemNode); //pegamos el elemento a la raiz "Documento" } //Generate XML Source source = new DOMSource(document); //Indicamos donde lo queremos almacenar Result result = new StreamResult(new java.io.File(name+".xml")); //nombre del archivo Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.transform(source, result); } } }

Podemos observar que disponemos de una función llamada generate que admite los parámetros:

  • String name: nombre del archivo (sin extensión xml).
  • ArrayList<String> key: lista de Strings que almacenará todas las claves del xml.
  • ArrayList<String> value: lista de Strings que almacenará todos los valores del xml

Una vez que llamamos a esta función con los parámetros adecuados observamos que el cometido de esta es crear una estructura xml completa y guardarla en un archivo .xml en la raíz del proyecto.

Y esto es todo, este rápido tutorial puede servirnos como guía para desarrollar la estructura xml que queramos, espero que os haya parecido sencillo.

Un saludo @alex_esquiva