# Dom Baum auslesen



## Stephan2009 (16. Jul 2009)

Hallo hab folgendes Problem und zwar hab ich einen Dom Parser geschrieben der ein XML Dokument einliest, mit der Transformator Klasse liest er das Dokument aus und erstellt daraus wieder eine XML Datei die folgt aussieht :

<myResortAttributeManagement>
    <myResortAttribute>
      <dataLogic.ResortAttribute>
        <resortAttributeId>0</resortAttributeId>
        <resortAttributeName>Sandstrand</resortAttributeName>
      </dataLogic.ResortAttribute>
      <dataLogic.ResortAttribute>
        <resortAttributeId>1</resortAttributeId>
        <resortAttributeName>Pool-Landschaft</resortAttributeName>
      </dataLogic.ResortAttribute>
      <dataLogic.ResortAttribute>
        <resortAttributeId>2</resortAttributeId>
        <resortAttributeName>Spa</resortAttributeName>
      </dataLogic.ResortAttribute>
      <dataLogic.ResortAttribute>
        <resortAttributeId>3</resortAttributeId>
        <resortAttributeName>Disco</resortAttributeName>
      </dataLogic.ResortAttribute>
    </myResortAttribute>
  </myResortAttributeManagement>
  <resortArrayList>

Ich möchte nun die einzelnen Tag attribute auslesen und in eine ArrayList speichern wie kann man da am besten vorgehn? also so kann ich auf die Tags zugreifen und wie dann am besten speichern in einer ArrayList?


```
NodeList knotenListe = doc.getElementsByTagName("resortAttributeId"); 
          	       	         	 
             int anzahl = knotenListe.getLength();
          	 for (int i = 0; i<anzahl; i++) {
          	 	 
          	 knotenListe.item(i).getFirstChild().getNodeValue();
```

Danke für die Hilfe


----------



## Noctarius (16. Jul 2009)

```
for (Node node = knotenListe.getFirstChild(); node != null; node = node.nextSibling()) { ... }
```

alternativ:

```
for (int index = 0; index < knotenListe.getLength() ; index++){
    Node node = knotenListe.item(index);
    ...
}
```


----------



## Stephan2009 (16. Jul 2009)

Danke so bekomm ich die Elemente aber kann ich die denn dann in einer ArrayListe speichern?


----------



## Noctarius (16. Jul 2009)

Wieso denn nicht?


```
List<Node> nodeListe = new ArrayList<Node>
```

Aber welchen Sinn sollte das haben? Du hast die doch schon als Liste (wenn auch NodeList)


----------



## Stephan2009 (16. Jul 2009)

Die XML Datei enthält verschieden Objekte von verschiedenen Verwaltungsklassen die sich um die Speichrung verschiedender Objekte kümmern und die Objekte die ich aus den Tags auslesen muss müssen wieder in die richtigen ArrayListen zurückgespeichert werden wegen der Schichtenarchitektur


----------



## Stephan2009 (16. Jul 2009)

Ich bekomme aber so nicht den Wert aus dem Tag in die ArrayListe  oder ? den brauch ich aber


----------



## Noctarius (16. Jul 2009)

node.getNodeValue();

Javadoc ;-)


----------



## Stephan2009 (16. Jul 2009)

Ja das weiß ich schon aber wenn ich das so mache :

Node node = knotenListe.item(index).getFirstChild().getNodeValue();

Dann geht das nicht


----------



## Noctarius (16. Jul 2009)

Vermutlich weil es kein #Text Node-Typ ist

Lass dir mal alle ausgeben, ich wette die erwarteten Werte kommen noch ;-)


----------



## Stephan2009 (16. Jul 2009)

Also er zeigt mir als Fehler an, dass ich durch
Node node = knotenListe.item(index).getFirstChild().getNodeValue();

er erwartet das Node als String angegeben werden soll also so:

String node=knotenListe.item(index).getFirstChild().getNodeValue();

aber ich möchte keine Strings in einer ArrayListe speichern sondern Objekte


----------



## Noctarius (16. Jul 2009)

Du kannst aber halt aus einen String keine "Objekte" machen, außer String-Objekte


----------



## Stephan2009 (16. Jul 2009)

Ja ok habs jetzt 

noch eine Frage und zwar 
Wie kann ich eine Fallunterscheidung machen also sind ja verschiedene Tags auf die ich zugreifen will 

wenn NodeList knotenListe = doc.getElementsByTagName("resortAttributeId");

mache das ..... 

und wenn 
wenn NodeList knotenListe = doc.getElementsByTagName("blabla");

dann mache das ?


----------



## Noctarius (16. Jul 2009)

```
if ("resortAttributeId".equals(node.getNodeName())) { ... }
```

NullPointer safe Variante
Node (Java Platform SE 6) <- JavaDoc hilft


----------

