Programación General > Java

 Serializacion XML

(1/1)

dayler:
Hola .. . . primero pedirles paciencia . .  para ver mi problema . . . y gracias de antemano . por el interés. . .

para serializar un objeto a xml hago lo siguiente:


--- Código: Java ---     public static void serializar(Object o, String fileName) throws FileNotFoundException, IOException{         String out;        FilesManager file = new FilesManager();        file.setPath(fileName);        //serializar xml        ByteArrayOutputStream bout = new ByteArrayOutputStream();        //BufferedOutputStream bout = new BufferedOutputStream(new FileOutputStream("periquito.xml"));        XMLEncoder xmlEncoder = new XMLEncoder(bout);        xmlEncoder.writeObject(o);        xmlEncoder.close();        out = bout.toString();         file.setPath(fileName);        file.openFile();        file.write(out);        file.closeFile();     }  
Al serializar por ejemplo una clase Persona qeu es como sigue:

--- Código: Java --- public class Persona {     private String name;    private String apellido;    private int edad;     public Persona(){}     public Persona(String name, String apellido, int edad){        this.name = name;        this.apellido = apellido;        this.edad = edad;    }     public void MostrarPersona(){        String mesage = "Nombre: " + name + " Apellido: " + " Edad: " + edad;         System.out.println(mesage);    }     public void setName(String name){        this.name = name;    }     public String getName(){        return name;    }     public void setApellido(String apellido){        this.apellido = apellido;    }     public String getApellido(){        return apellido;    }     public void setEdad(int edad){        this.edad = edad;    }     public int getEdad(){        return edad;    }}  
me da el siguiente resultado . .

--- Código: XML --- <?xml version="1.0" encoding="UTF-8"?><java version="1.6.0_10-rc2" class="java.beans.XMLDecoder">  <object class="testserializerxml.Persona">   <void property="apellido">    <string>hinojosa</string>   </void>   <void property="edad">    <int>23</int>   </void>   <void property="name">    <string>leyla</string>   </void>  </object> </java>   
Cosa que esta bastante bien . . . pero si observan verán que el orden de las propiedades ha sido cambiado tras la serializacion, yo requiero que esto no pase, ahora no se si alguno de ustedes podría decirme como es que hago para que XMLEncoder me serialize las propiedades tal cual aparecen, y no intente ordenar las alfabéticamente,  si es que esto es poble claro.

Saludos . . .

silverfox:
Hola.

Para el XML es absolutamente indiferente que los tags del mismo nombre y a la misma profundidad vengan en un orden o en otro.

Si miras la documentación de Document verás que cuando preguntas por un hijo, o un conjunto de ellos, en la propia documentación de Java te dice que esos métodos no garantizan que los hijos sean devueltos en orden.

De todas formas ¿cuál es la diferencia entre las dos clases que propones? Funcionalmente no hay ninguna ¿por qué necesitas que se conserve el orden de los atributos?



Un saludo.



Silverfox

dayler:
Hola . .  .

Inicialmente agradecerte por tu respuesta . . . . la verdad ni yo estoy muy seguro, segun me entere hera para facilitarse la vida con un xslt, qeu se estaba desarrollando . . . me lo enviaron como requerimiento, pero al parecer ya solucionaron el problema. . .  :bad:

Saludos . . .

Navegación

[0] Índice de Mensajes

Ir a la versión completa