S?bado, 25 de julio de 2015

Continuando con una publicación donde hacen la lectura de archivos XML por el Profesor Enrique Nash, quise añadir la forma de crear y de modificar estos archivos ya que la misma librería y los siguientes métodos tanto como el de lectura pueden ser utilizados en Android ya sea con Eclipse o Android Studio.

Para esto vamos a utilizar la siguiente librería.

http://www.jdom.org/downloads/index.html

Creación del archivo XML.

Podemos utilizar Elements y Attribute entre otros métodos, para comenzar vamos a ver la estructura de cómo quedará.

<?xml version="1.0" encoding="UTF-8"?>

<personas>

<persona tipo="Perona 1">

<name>Daniel 1</name>

<ap>Marin 1</ap>

</persona>
<persona tipo="Perona 2">

<name>Daniel 2</name>

<ap>Marin 2</ap>

</persona>

</personas>

Lo cual <personas> es nuestro Element root, <persona> son Element añadidos a nuestro elemento root y <name> como <ap> con añadidos a persona, tipo son Attribute que pueden ser añadidos a cualquier etiqueta.

public boolean crearXML(String dir){

        try{

            

            Document doc = new Document(); //Creamos el documento que guardara toda la información.

            Element root = new Element("personas"); //Elemento root al cual nombraremos personas

            doc.setRootElement(root); //Añadimos nuestro elemento root al documento

            /*

                En el siguiente ciclo añadimos toda la información para crear lo que es

                <persona tipo="Perona 1">

                    <name>Daniel 1</name>

                    <ap>Marin 1</ap>

                </persona>

            */

            for (int i = 1; i <= 2; i++){

                Element persona = new Element("persona");

                persona.setAttribute(new Attribute("tipo", "Perona " + i));

                persona.addContent(new Element("name").setText("Daniel " + i));

                persona.addContent(new Element("ap").setText("Marin " + i));

                root.addContent(persona);

            }        

           

            XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());

            FileWriter fw = new FileWriter(new File(dir,"confDM.xml"));

            xmlOut.output(doc, fw);

            fw.close();

            return true;

        }catch(IOException ex){

            System.err.println("Error crearXML\n" + ex.getMessage());

            return false;

        }

    }

Modificar XML.

Podemos tener información guardada en el XML el cual en un futuro o para cosas dinámicas de guardado de información básica, necesitaremos añadir nueva información o sustituir la ya existente, para lo cual en el siguiente método al archivo XML que creamos con el XML anterior añadimos la palabra “modificado” solo para demostrar que si fue modificado.

 

public boolean modificarXML(String dir){

        try{

            SAXBuilder build = new SAXBuilder(); //Instanciamos la clase SAXBuilder para poder obtener la extructura del documento XML.

            Document doc = (Document)build.build(new File(dir)); //Leemos el XML para convertirlo en Document.

            Element root = doc.getRootElement(); //Obtenemos el elemento root del documento.

            List<Element> child = root.getChildren(); //Obtenemos a los hijos pertenecientes al root, el cual nos trae en forma de lista.

            /*

                Creamos un for tipo foreach el cual leeremos todos los Elements que tiene cada Element.

                De cada Element sacamos sus hijos y le mandamos el nuevo texto que tendra cada etiqueta

            */

            for (Element i : child){

                List<Element> ch = i.getChildren();

                for (Element o : ch){

                    o.setText(o.getValue() + " modificado");

                }

            }

            XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());

            FileWriter fw = new FileWriter(new File(dir));

            xmlOut.output(doc, fw);

            fw.close();

            return true;

        }catch(IOException | JDOMException ex){

            System.err.println("Error modificarXML\n" + ex.getMessage());

            return false;

        }

    }


Dejo un ejemplo ya construido para mejor ayuda.

Descargar

Para dudas o aclaraciones se pueden comunicar conmigo Daniel de Jesús Marin Ruvalcaba al correo [email protected]



Publicado por danielmarinr @ 14:05  | Java SE8
Comentarios (0)  | Enviar
Comentarios