Wpis z mikrobloga

#java #xml #programowanie

W jaki sposób łatwo zapisać listę obiektów do XML (serializacja)?

W .NET jest klasa System.Xml.Serialization i to generuje ładnego XML-a. Jaki jest odpowiednik w Javie?
  • 14
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Próbowałem:

1.

JAXBContext context = JAXBContext.newInstance(ArrayList.class); // tu można dać tylko Book (czyli klasę) a nie listę obiektów
Marshaller m = context.createMarshaller();
  • Odpowiedz
@adios: Próbowałem w JAXB, to działa tylko dla pojedynczego obiektu. Nie wiem jak zrobić dla całej listy.

JAXBContext context = JAXBContext.newInstance(Book.class); // działa
JAXBContext context = JAXBContext.newInstance(ArrayList.class); // nie działa, jak zrobić?

@martinuz: wolałbym to co jest wewnątrz Jale może być i zewnętrzna biblioteka. Tylko która działa na listach (bo do XML-a jest ich masa).
  • Odpowiedz
Wiem ze to moze nie rozwiazuje Twojego problemu ale... opakowac liste w obiekt? :>


@martinuz: myślałem nad opakowaniem, ale jest błąd o adnotacjach o których pisze @adios

@adios: no właśnie widzę, że ten JAXB, to duże narzędzie. A ja potrzebuję tylko zrobić XML-a i nie chcę śmiecić
  • Odpowiedz
@srgs: dzięki za link.

Wrzuciłem bibliotekę, ale nadal brakuje jeszcze jakiejś biblioteki:
java.lang.ClassNotFoundException: org.xmlpull.v1.XmlPullParserException

W kodzie nic szczególnego
  • Odpowiedz
@srgs: już działa:

XStream xstream = new XStream(new StaxDriver());
xml = xstream.toXML(books);

Ale skąd te wziąłeś ten link do biblioteki to nie mam pojęcia :D
(ciekawi mnie bo np. żeby potem dokumentację poczytać czy coś).
  • Odpowiedz