# Komfortabel XML Dokumente schreiben und lesen



## ProChris (1. Mrz 2012)

Hallo,

ich kenne mich mit XML ganz gut aus, jedoch nicht mit einer Möglichkeit XML Dokumente mittels Java zu generieren oder zu lesen. Ich habe mich hier im Forum bereits durch den einen oder andern Beitrag gelesen und noch nicht so richtig fündig geworden. Kennt Ihr eine Möglichkeit ein XML Dokument nicht über eine Baumstruktur auszulesen?

Mein XML sieht wie folgt aus:
[XML]
<person id = "1">
  <firstname>Pro</firstname>
  <lastname>Chris</lastname>
  <is>
    <programmer status = "1" />
    <hobbycook status = "3" />
     ...
  </is>
</person>
<person id = "2">
  <firstname>Max</firstname>
  <lastname>Muster</lastname>
  <is>
    <programmer status = "0" />
    <cook status = "0" />
     ...
  </is>
</person>
...
[/XML]

Diese Struktur möchte ich in eine Java Objektstruktur transferieren.


```
public class Person {
  private int id;
  private String firstname;
  private String lastname;
  private ArrayList<IS> is = new ArrayList<is>();
  // ...
}
```

Achso, vielleicht sollte ich dazusagen, dass ich keine zusätzlichen Bibliotheken (JARs) nutzen möchte.

Viele Grüße

ProChris


----------



## nillehammer (1. Mrz 2012)

> Kennt Ihr eine Möglichkeit ein XML Dokument nicht über eine Baumstruktur auszulesen?


Bin nicht sicher, ob ich es ganz verstanden habe. Meinst Du, Du willst kein DOM im Hauptspeicher haben? Falls ja, und unter der Voraussetzung, dass weitere Libs nicht in Frage kommen, bleibt Dir nur SAX-Parsing von JAXB. Das ist Bestandteil der Java Standard Edition.


----------



## Guybrush Threepwood (1. Mrz 2012)

Du meinst Serialisierung und Deserialisierung, oder? Java hat hierfür den XMLEncoder und XMLDecoder eingebaut. Siehe:
- XMLEncoder (Java 2 Platform SE v1.4.2)
- XMLDecoder (Java 2 Platform SE v1.4.2)
- Galileo Computing :: Java ist auch eine Insel – 17.11 Alternative Datenaustauschformate


----------



## nillehammer (1. Mrz 2012)

Guybrush Threepwood hat gesagt.:
			
		

> Du meinst Serialisierung und Deserialisierung, oder?


Wenn ich das Problem des TOs richtig verstanden habe, wären die richtigen Stichworte hier wohl eher Marshalling/Unmarshalling.


----------



## Guybrush Threepwood (1. Mrz 2012)

nillehammer hat gesagt.:


> Wenn ich das Problem des TOs richtig verstanden habe, wären die richtigen Stichworte hier wohl eher Marshalling/Unmarshalling.



Anhand des ersten Posts kann ich das weder bestätigen noch dementieren. Ich sehe hier keine Widerspruch.


----------



## ProChris (1. Mrz 2012)

Hallo,

ich suche nach einer Möglichkeit einfach an die Inhalte in den XML Dokument zu kommen. Ich stelle mir in etwa so etwas vor:

xmldocument.getNode(1).getAttribute("id"); // gibt den Wert 1
xmldocument.getNode(2).getAttribute("id"); // gibt den Wert 2

xmldocument.getNode(1).getNode("firstname"); // gibt den Wert Pro
xmldocument.getNode(1).getNode("lastname"); // gibt den Wert Chris
...
[XML]
<person id = "1">
  <firstname>Pro</firstname>
  <lastname>Chris</lastname>
  <is>
    <programmer status = "1" />
    <hobbycook status = "3" />
     ...
  </is>
</person>
<person id = "2">
  <firstname>Max</firstname>
  <lastname>Muster</lastname>
  <is>
    <programmer status = "0" />
    <cook status = "0" />
     ...
  </is>
</person>
...[/XML]


----------



## nillehammer (1. Mrz 2012)

Ah ok, dann ist JAXB etwas zu hoch angesetzt. Dort will man XML-Strukturen direkt in Java-Objkete überführen. Wenn du auf Werte in einem XML-Dokument -so wie von Dir beschrieben- zugreifen willst, dann brauchst Du einen DOM-Parser. Das JSE stellt Dir dafür die Klasse javax.xml.parsers.DocumentBuilder zur verfügung. Diese erzeugt Instanzen von org.w3.dom.Document. In diesem kannst du dann über die Elemente und Attribute browsen.


----------

