Tenemos la estructura XML siguiente:
<libreria>
<ListaLibro>
<Libro>
<autor>XXXXXXX</autor>
<nombre>XXXXXXX</nombre>
<editorial>XXXXXXX</editorial>
<isbn>XXXXXXX</isbn>
</Libro>
......
</ListaLibro>
....
<lugar>XXXXXXX</lugar>
<nombre>XXXXXX</nombre>
</libreria>
Para mapear la raiz es necesario una clase librería con anotación @XmlRootElement.
@XmlRootElement
public class Libreria {
.....
}
Esta clase tiene un atributo por cada etiqueta del XML incluido ListaLibro que es un array de elementos de tipo Libro:
@XmlElementWrapper(name = "ListaLibro")
@XmlElement(name = "Libro")
private ArrayList<Libro> ListaLibro;
La clase librería, es la clase que mapea el XML
import java.util.ArrayList;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
//Esto significa que la clases "Libreria.java" es el elemento raiz
@XmlRootElement
public class Libreria {
//Wrapper
@XmlElementWrapper(name = "ListaLibro")
@XmlElement(name = "Libro")
private ArrayList<Libro> ListaLibro;
private String nombre;
private String lugar;
public ArrayList<Libro> getListaLibro() {
return ListaLibro;
}
public void setListaLibro(ArrayList<Libro> ListaLibro) {
this.ListaLibro = ListaLibro;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setLugar(String lugar) {
this.lugar = lugar;
}
public String getNombre() {
return nombre;
}
public String getLugar() {
return lugar;
}
}
La clase libro que mapea cada uno de los nodos <Libro> del XML
import javax.xml.bind.annotation.XmlType;
@XmlType(propOrder = { "autor", "nombre", "editorial", "isbn" })
public class Libro {
private String nombre;
private String autor;
private String editorial;
private String isbn;
public String getNombre() {
return nombre;
}
public String getAutor() {
return autor;
}
public String getEditorial() {
return editorial;
}
public String getIsbn() {
return isbn;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public void setAutor(String autor) {
this.autor = autor;
}
public void setEditorial(String editorial) {
this.editorial = editorial;
}
public void setIsbn(String isbn) {
this.isbn = isbn;
}
}