# objekte in xml datei packen (JAXB)



## schnischnaschnapi (13. Apr 2007)

Hi,

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


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

und dann unten


```
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


----------



## Gast (13. Apr 2007)

also oben steht natürlich überall perseins genau wie unten in zeile 5 (sorry das wirrwarr) ;-)


----------



## Hilefoks (13. Apr 2007)

Etwa so:
	
	
	
	





```
@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; }
}
```


```
@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); }
}
```


```
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


----------



## schnischnaschnapi (16. Apr 2007)

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!


----------



## schnischnaschnapi (16. Apr 2007)

Ach ja ... der Quellcode funkt bei mir. Ich habe einige Kleinigkeiten geändert und es hat geklappt.


----------



## Hilefoks (16. Apr 2007)

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


----------

