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
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 try { 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 } } { ficheroXML.normalizeDocument(); //Esto no se si deberia generar la estructura de arbol Source source = new DOMSource(ficheroXML); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.transform(source, result); } } { } }
Y el resultado del XML es el siguiente:
Código XML:
Ver original
<?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
<?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?