# Jdom Elemente lesen



## js-mueller (7. Mai 2005)

Ich hbin langsam am verzweifeln, ich möchte gerne eine vorhandene xml datei einlesen und di elemente in strings geliefert bekommen.
Ich bin schon die ganze Zeit bei google am suchen, aber ich find einfach nichts was mir das hinreichend erklärt, irgendwie hab ich im moment nen Brett vorm Kopf. In meinem Buch ist dazu zwar auch ein großes Kapitel, aber irgendwie will das net in meinen Kopf :-/ ( Java ist auch eine Insel )

Also meine xml datei sieht so aus


```
<rSPR>
    <sprache>de-DE</sprache>
    <version>0.0.01</version>
    <sprachListe>
        <element name="Test">Test ausgabe</element>
        <element name="Test2">Test ausgabe 2</element>
    </sprachListe>
</rSPR>
```

So nun möchte ich einfach irgendwie auf die elemente zugreifen können, hab aber noch kein Beispiel gefunden wo mir explizit gezeigt wirdwie ich auf <element name="Test"> zugreifen kann.
Ich hoffe mir kann hier jemand helfen


----------



## Roar (7. Mai 2005)

ähm geht da sproblem auch noch ein bisschen konkreter?
mit Element#getChildren() oder Element#getChildText() kommst du imem an kind elemente, hier ist die dokumentation zu jdom: http://www.jdom.org/docs/apidocs/


----------



## js-mueller (8. Mai 2005)

Mein Problem ist ich bekomm die datei netmal ordentlich eingelesen um irgendwie auf irgendwas zugreifen zu können.
Die API doc hatt ich auch schon gefunden und versucht mir was zusammen zu basteln, aber ich schaffs net wirklich.
Bei manchen lese ich was mit SAXBuilder dann was mit Document das was mit Inputter und son kram. Was ist den das einfachste um einfach an die elemente dran zu kommen?


----------



## clemson (8. Mai 2005)

also, von einer Datei einlesen würde ich so machen:


```
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build( new File("myXML.xml") );
```

um dieses eine 'element' zu holen wird's etwas schwieriger, da es sich vom zweiten 'element' nur durch das attribut 'name' unterscheidet!

deshalb muss da xpath (abfragesprache für xml dokumente) her...


```
XPath abfrage = XPath.newInstance("//sprachListe/element[@name='Test']");
```

und wenn du diese Abfrage auf das Document anwenden willst, machst du folgendes:


```
Object ob = abfrage.selectSingleNode( doc );
```

Dieses Object ist vom Typ org.jdom.Element sein, also mit


```
Element element = (org.jdom.Element) ob;
```

kannst du das Object casten, und mittels


```
element.getText()
```

kannst du beispielsweise den Inhalt des Elements holen...


übrigens, gutes XPath-Tutorial findest du hier


----------



## js-mueller (8. Mai 2005)

Astrein danke für die antwort, bin gerade nen zu Hause, abe rich werd das heute Abend mal austesten und hier bescheid geben wie es geklappt hat


----------



## bazz-dee (11. Mai 2005)

Andere Art mit JDom



```
SAXBuilder builder = new SAXBuilder(false);
Document doc = builder.build("myFile.xml");
Element root = doc.getRootElement();
Element child = root.getChild("Elementname");
String myVar = child.getText();
```

statt

```
String myVar = child.getText();
```

kannst du dann über

```
Element child = child.getChild();
```

auch noch eine Ebene tiefer gehen


----------

