Foros del Web » Programación para mayores de 30 ;) » Java »

Dar forma al crear un XML

Estas en el tema de Dar forma al crear un XML en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 04/01/2016, 08:03
 
Fecha de Ingreso: julio-2015
Mensajes: 85
Antigüedad: 8 años, 9 meses
Puntos: 4
Dar forma al crear un XML

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 Java:
Ver original
  1. public static void crearXML()
  2.     {
  3.         try
  4.         {
  5.             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  6.             DocumentBuilder builder = factory.newDocumentBuilder();
  7.             DOMImplementation implementation = builder.getDOMImplementation();
  8.  
  9.  
  10.             Document ficheroXML = implementation.createDocument(null, "departamentos", null); //El elemento Raiz del documento es departamentos
  11.             ficheroXML.setXmlVersion("1.0"); //asigno la version del XML
  12.  
  13.             Element raiz = ficheroXML.getDocumentElement();
  14.  
  15.  
  16.             try
  17.             {
  18.                 File fichero = new File("Departamentos.dat"); //Cargamos el fichero a leer
  19.                 FileInputStream sacarAfichero = new FileInputStream(fichero); //Crea el flujo de Entrada
  20.                 ObjectInputStream leer = new ObjectInputStream(sacarAfichero);
  21.  
  22.                 Departamento depart;    
  23.  
  24.                 //Por cada vuelta del bucle leeo un departamento y genero su correspondiente XML
  25.                 while((depart = (Departamento)leer.readObject()) != null)
  26.                 {
  27.                     Element departamento = ficheroXML.createElement("departamento"); //Creo una etiqueta departamento con para cada uno
  28.  
  29.                     Element nombreDepartamento = ficheroXML.createElement("nombreDepartamento"); //Cada departamento tiene una etiqueta nombreDepartamento
  30.                     Text textoNombreDepartamento = ficheroXML.createTextNode(depart.get_nombre()); //Genero su texto a partir del objeto leido del fichero
  31.                     nombreDepartamento.appendChild(textoNombreDepartamento); //Inserto el texto en la etiqueta nombreDepartamento
  32.                     departamento.appendChild(nombreDepartamento); //Inserto la etiqueta nombreDepartamento en la etiqueta departamento
  33.  
  34.                     Element idDepartamento = ficheroXML.createElement("idDepartamento"); //Cada departamento tiene una etiqueta idDepartamento
  35.                     Text textoIdDepartamento = ficheroXML.createTextNode(Integer.toString(depart.get_identificador())); //Genero su texto a partir del objeto leido del fichero
  36.                     idDepartamento.appendChild(textoIdDepartamento); //Inserto el texto en la etiqueta idDepartamento
  37.                     departamento.appendChild(idDepartamento);  //Inserto la etiqueta idDepartamento en la etiqueta departamento
  38.  
  39.                     Element localidadDepartamento = ficheroXML.createElement("localidadDepartamento"); //Cada departamento tiene una etiqueta localidadDepartamento
  40.                     Text textoLocalidadDepartamento = ficheroXML.createTextNode(depart.get_localidad()); //Genero su texto a partir del objeto leido del fichero
  41.                     localidadDepartamento.appendChild(textoLocalidadDepartamento); //Inserto el texto en la etiqueta localidadDepartamento
  42.                     departamento.appendChild(localidadDepartamento);  //Inserto la etiqueta localidadDepartamento en la etiqueta departamento
  43.  
  44.                     raiz.appendChild(departamento);//Inserto la etiqueta departamento a la etiqueta departamentos
  45.                 }
  46.                
  47.             }
  48.             catch(Exception e)
  49.             {
  50.                 ficheroXML.normalizeDocument(); //Esto no se si deberia generar la estructura de arbol
  51.                
  52.                 Source source = new DOMSource(ficheroXML);
  53.                 Result result = new StreamResult(new java.io.File("departamentos.xml"));
  54.                 Transformer transformer = TransformerFactory.newInstance().newTransformer();
  55.                 transformer.transform(source, result);
  56.             }
  57.         }
  58.         catch(Exception e)
  59.         {
  60.  
  61.         }
  62.  
  63.     }

Y el resultado del XML es el siguiente:
Código XML:
Ver original
  1. <?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 XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <departamentos>
  3.      <departamento>
  4.           <nombreDepartamento>Marketing</nombreDepartamento>
  5.           <idDepartamento>1</idDepartamento>  
  6.           <localidadDepartamento>Madrid</localidadDepartamento>
  7.      </departamento>
  8. </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?

Etiquetas: forma, programa, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:28.