Mam problem z "załapaniem" zasad JAXB w przypadku ArrayList. Poniżej wstawiam uproszczony przykład, w jaki sposób zapisuję do XMLa jedną listę.
import java.io.File;
import java.util.ArrayList;
import javax.swing.JFileChooser;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
public class Test
{
Listy listy;
ArrayList<String> listaImion;
public static void main(String[] args)
{
Test proba = new Test();
proba.zapiszListeDoXML();
}
public void zapiszListeDoXML()
{
listaImion = new ArrayList<String>();
listaImion.add("Ala");
listaImion.add("Ola");
listaImion.add("Ula");
listy = new Listy();
listy.setList(listaImion);
JFileChooser fileCh = new JFileChooser();
if (fileCh.showSaveDialog(null)==JFileChooser.APPROVE_OPTION)
{
File nazwaPliku = fileCh.getSelectedFile();
try
{
JAXBContext jaxbContext = JAXBContext.newInstance(Listy.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
jaxbMarshaller.marshal(listy, nazwaPliku);
jaxbMarshaller.marshal(listy, System.out);
}
catch (JAXBException f)
{
f.printStackTrace();
}
}
}
}
i
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "Listy")
public class Listy
{
List<String> list = new ArrayList<String>();
public List<String> getList()
{
return list;
}
@XmlElement(name = "Value")
public void setList(List<String> list)
{
this.list = list;
}
}
Nie wiem w jaki sposób mógłbym zapisać więcej list, np. jeszcze listaCyfr. Czy konieczne jest stworzenie dodatkowej klasy?