Ver Mensaje Individual
  #6 (permalink)  
Antiguo 07/11/2011, 05:04
leeann
 
Fecha de Ingreso: febrero-2006
Mensajes: 297
Antigüedad: 18 años, 8 meses
Puntos: 1
Respuesta: opciones para pasar de xml a un objeto java

He conseguido pasar por el servicio web una sola persona, lo que me pasaba era que me faltaba era lo siguiente:
new XStream() => new XStream(new DomDriver()) --> para que pueda analizar el documento.

Ahora el problema le tengo en el listado de personas y creo que es porque al hacer toxml, me crea el siguiente xml:
Código XML:
Ver original
  1. <Personas>
  2. <Personas>
  3. <Persona>
  4. <nombre>Maria</nombre>
  5. <apellidos>gil</apellidos>
  6. </Persona>
  7. <Persona>...
es decir, me crea 2 veces la etiqueta personas...

NO sé porqué puede ser, supongo que por eso no puedo recorrerlo en el cliente. Podéis decirme si veis algo que esté mal? Las clases que tengo son las siguientes:

Personas:
Código java:
Ver original
  1. public class Personas{
  2.     private List<Persona> Personas;
  3.  
  4.     public Personas(){
  5.         Personas= new ArrayList<Persona>();
  6.     }
  7.     public void add(Persona p) {
  8.         Personas.add(p);
  9.     }
  10.  
  11. }

Y el servicio que es donde creo el array y lo paso al xml es:

Código java:
Ver original
  1. String xml="";
  2.        
  3.         Personas lista= new Personas();
  4.         Persona p=null;
  5.         try{
  6.         ResultSet rs = st.executeQuery("select * from personas WHERE 1");
  7.         XStream xstream = new XStream();
  8.         xstream.alias("Personas ", Personas .class);
  9.         xstream.alias("Persona ", Personas.class);
  10.             while ( rs.next() )
  11.             {
  12.                 p= new Persona();
  13.                 p.setNombre(rs.getInt(2));
  14.                 p.setApellidos(rs.getInt(3));
  15.                 lista.add(p) ;
  16.             }
  17.            xml =xstream.toXML(lista);
  18.            return xml;

POr qué puede ser que me duplique la etiqueta? si solamente creo la lista una vez?