
Originariamente inviata da
gattamelogna
Qualcuno saprebbe darmi una mano?
Nel tuo codice ci sono diverse cose che non vanno ... anche concettuali. Ad esempio, tanto per dirne due, stai modificando i dati sempre dello stesso identico oggetto Elemento e comunque non stai gestendo una "lista" dei tuoi elementi.
Prendi spunto da quanto segue che ho scritto al volo:
codice:
import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlElement;
@XmlRootElement
public class Libri {
private List<Libro> listaLibri;
@XmlElement(name="libro")
public List<Libro> getListaLibri() {
return listaLibri;
}
public void setListaLibri(List<Libro> listaLibri) {
this.listaLibri = listaLibri;
}
}
codice:
public class Libro {
private String titolo;
private String editore;
public Libro(String titolo, String editore) {
this.titolo = titolo;
this.editore = editore;
}
// getTitolo() / setTitolo(String titolo) / getEditore() / setEditore(String editore)
// omessi per brevità .....
}
codice:
import java.io.*;
import java.util.*;
import javax.xml.bind.*;
public class ProvaLibri {
public static void main(String[] args) {
try {
List<Libro> listaLibri = new ArrayList<Libro>();
listaLibri.add(new Libro("Ant in Action", "Manning"));
listaLibri.add(new Libro("Java I/O, Second Edition", "O'Reilly"));
Libri libri = new Libri();
libri.setListaLibri(listaLibri);
JAXBContext context = JAXBContext.newInstance(Libri.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(libri, new File("libri.xml"));
} catch (Exception e) {
System.err.println(e);
}
}
}
File libri.xml generato:
codice:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<libri>
<libro>
<editore>Manning</editore>
<titolo>Ant in Action</titolo>
</libro>
<libro>
<editore>O'Reilly</editore>
<titolo>Java I/O, Second Edition</titolo>
</libro>
</libri>