Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - dardosmanai

Páginas: [1]
1
Muy buenas.

Resulta que he hecho un programa que genera un XML a través de los objetos que hay escritos en un fichero, hasta ahi todo bien pero resulta que el XML me lo genera en una única linea es decir no tiene estructura de árbol.

Código Java

Código: [Seleccionar]
public static void crearXML()
    {
        try
        {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            DOMImplementation implementation = builder.getDOMImplementation();
 
 
            Document ficheroXML = implementation.createDocument(null, "departamentos", null); //El elemento Raiz del documento es departamentos
            ficheroXML.setXmlVersion("1.0"); //asigno la version del XML
 
            Element raiz = ficheroXML.getDocumentElement();
 
 
            try
            {
                File fichero = new File("Departamentos.dat"); //Cargamos el fichero a leer
                FileInputStream sacarAfichero = new FileInputStream(fichero); //Crea el flujo de Entrada
                ObjectInputStream leer = new ObjectInputStream(sacarAfichero);
 
                Departamento depart;   
 
                //Por cada vuelta del bucle leeo un departamento y genero su correspondiente XML
                while((depart = (Departamento)leer.readObject()) != null)
                {
                    Element departamento = ficheroXML.createElement("departamento"); //Creo una etiqueta departamento con para cada uno
 
                    Element nombreDepartamento = ficheroXML.createElement("nombreDepartamento"); //Cada departamento tiene una etiqueta nombreDepartamento
                    Text textoNombreDepartamento = ficheroXML.createTextNode(depart.get_nombre()); //Genero su texto a partir del objeto leido del fichero
                    nombreDepartamento.appendChild(textoNombreDepartamento); //Inserto el texto en la etiqueta nombreDepartamento
                    departamento.appendChild(nombreDepartamento); //Inserto la etiqueta nombreDepartamento en la etiqueta departamento
 
                    Element idDepartamento = ficheroXML.createElement("idDepartamento"); //Cada departamento tiene una etiqueta idDepartamento
                    Text textoIdDepartamento = ficheroXML.createTextNode(Integer.toString(depart.get_identificador())); //Genero su texto a partir del objeto leido del fichero
                    idDepartamento.appendChild(textoIdDepartamento); //Inserto el texto en la etiqueta idDepartamento
                    departamento.appendChild(idDepartamento);  //Inserto la etiqueta idDepartamento en la etiqueta departamento
 
                    Element localidadDepartamento = ficheroXML.createElement("localidadDepartamento"); //Cada departamento tiene una etiqueta localidadDepartamento
                    Text textoLocalidadDepartamento = ficheroXML.createTextNode(depart.get_localidad()); //Genero su texto a partir del objeto leido del fichero
                    localidadDepartamento.appendChild(textoLocalidadDepartamento); //Inserto el texto en la etiqueta localidadDepartamento
                    departamento.appendChild(localidadDepartamento);  //Inserto la etiqueta localidadDepartamento en la etiqueta departamento
 
                    raiz.appendChild(departamento);//Inserto la etiqueta departamento a la etiqueta departamentos
                }
               
            }
            catch(Exception e)
            {
                ficheroXML.normalizeDocument(); //Esto no se si deberia generar la estructura de arbol
               
                Source source = new DOMSource(ficheroXML);
                Result result = new StreamResult(new java.io.File("departamentos.xml"));
                Transformer transformer = TransformerFactory.newInstance().newTransformer();
                transformer.transform(source, result);
            }
        }
        catch(Exception e)
        {
 
        }
 
    }

Y el resultado del XML es el siguiente:

Código XML:

Código: [Seleccionar]
<?xml version="1.0" encoding="UTF-8" standalone="no"?><departamentos><departamento><nombreDepartamento>Marketing</nombreDepartamento<idDepartamento>1</idDepartamento><localidadDepartamento>Madrid</localidadDepartamento></departamento><departamento><nombreDepartamento>Compras</nombreDepartamento><idDepartamento>2</idDepartamento><localidadDepartamento>Barcelona</localidadDepartamento></departamento><departamento><nombreDepartamento>Ventas</nombreDepartamento><idDepartamento>3</idDepartamento><localidadDepartamento>Bilbao</localidadDepartamento></departamento><departamento><nombreDepartamento>Finanzas</nombreDepartamento><idDepartamento>4</idDepartamento><localidadDepartamento>Sevilla</localidadDepartamento></departamento><departamento><nombreDepartamento>Investigación</nombreDepartamento><idDepartamento>5</idDepartamento><localidadDepartamento>León</localidadDepartamento></departamento><departamento><nombreDepartamento>I+D</nombreDepartamento><idDepartamento>6</idDepartamento><localidadDepartamento>Londres</localidadDepartamento></departamento></departamentos>
Esta todo en una linea y quiero que tenga la estructura:

Código: [Seleccionar]
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<departamentos>
     <departamento>
          <nombreDepartamento>Marketing</nombreDepartamento>
          <idDepartamento>1</idDepartamento>   
          <localidadDepartamento>Madrid</localidadDepartamento>
     </departamento>
</departamentos>

No se como conseguirlo use el método normalizeDocument(); que yo creía que me lo dejaría con ese formato pero nada no consigo nada con el, también he intentado meter yo los saltos de linea pero no he conseguido hacerlo funcionar, alguien me podría decir como conseguir ese formato?

Páginas: [1]

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".