objekte in xml datei packen (JAXB)

  • Themenstarter Themenstarter schnischnaschnapi
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

schnischnaschnapi

Gast
Hi,

ich habe heute mit jaxb angefangen... und prompt folgendes Problemchen:

Code:
Person perseins = new Person();
		perszwei.setAlter(37);
		perszwei.setName("Raab");
		perszwei.setVorname("Stefan");
		perszwei.setBeruf("Entertainer");

und dann unten

Code:
JAXBContext context = JAXBContext.newInstance(Person.class);
		Marshaller m = context.createMarshaller();
		m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE );
m.marshal(p, new FileWriter("pers-jaxb.xml"));

das geht ja auch...
aber wie verflixt kriege ich MEHRERE personen in die xml?

Also ne Liste kann ich nicht übergeben
 
also oben steht natürlich überall perseins genau wie unten in zeile 5 (sorry das wirrwarr) ;-)
 
Etwa so:
Code:
@XmlAccessorType(XmlAccessType.FIELD)
public class Person {
    @XmlAttribute
    private int id;
    private String name;

    public Person() {}

    public Person(String name, int id) {
        this.id=id;
        this.name=name;
    }

    public void setName(String name) { this.name=name; }
    public String getName() { return name; }
    public void setID(int id) { this.id=id; }
    public int getID() { return id; }
}
Code:
@XmlRootElement()
@XmlAccessorType(XmlAccessType.FIELD)
public class PersonManager {
    @XmlElementWrapper(name="persons")
    @XmlElemet(name="person")
    private List<Person> persons;

    public PersonManager() { persons=new LinkedList<Person>();

    public addPerson(Person p) { persons.add(p); }
}

Code:
public class Main {
    public static void main(String[] args) {
        PersonManager m=new PersonManager();
        m.add(new Person("Heini"));
        m.add(new Person("Wolfgang");

        JAXBContext context = JAXBContext.newInstance(PersonManager.class); 
        Marshaller ms = context.createMarshaller(); 
        ms.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
        ms.marshal(m, new FileWriter("pers-jaxb.xml")); 
    }
}
Nicht getestet - sollte aber so gehen.

MfG,
Hilefoks
 
Kannst du mir bei Gelegenheit kurz ein paar Takte zu den @Befehlen in deinem Quelltext erzählen? Oder weißt du wo ich da einfache Beispiele zum Nachschlagen finde?

thx schonmal!
 
Ach ja ... der Quellcode funkt bei mir. Ich habe einige Kleinigkeiten geändert und es hat geklappt.
 
schnischnaschnapi hat gesagt.:
Kannst du mir bei Gelegenheit kurz ein paar Takte zu den @Befehlen in deinem Quelltext erzählen?
Diese @Befehle nennen sich Annotations. Mit Ihnen kannst du JAXB mitteilen wie es deine Klassen verarbeiten soll. Dabei ist eine Annotation zwingend: @XmlRootElement(). Die Annotations die du am "häufigsten" brauchen wirst sind bereits in meinem Beispielcode und sollten selbsterklärend sein... weitere Informationen findest du ansonsten u.A. hier https://jaxb.dev.java.net/guide/.

MfG,
Hilefoks
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben