# Prob: Auslesen XML File mit JDOM



## Troilus (8. Jul 2004)

Hi, ich hab heute mal angefangen mich mit JDOM zu beschäftigen und hab nun folgendes Problem:

Ich habe als Grundlage mir zu Testzwecken folgende XML-Datei gebaut:







Nun möchte ich den rot umrandeten Bereich auslesen. Der markierte Bereich stellt eine Liste mit Rezeptzutaten dar(Menge, Einheit, Name). Insgesamt sind dort 2 Zutaten zu sehen. Um an diese Einträge ranzukommen hab ich nachgelesen, dass man diese Daten in eine Liste schreiben kann, um sie dort auszulesen und weiterzuverarbeiten.

Dazu habe ich folgenden Code geschrieben:


```
try {
			
			doc = builder.build("c:\\257491712file.xml");
			Element root = doc.getRootElement();
		
			Element recipeName = root.getChild("RecipeName");
			System.out.println("Rezeptname: "+recipeName.getText());
			
			Element ingredientList = root.getChild("IngredientList");
			
			List ingredients = ingredientList.getContent();
			
			Iterator ingredientIterator = ingredients.iterator();
			while ( ingredientIterator.hasNext() )
			{
			  
				Element tempElement = (Element)ingredientIterator.next();
				
				Element tempQuantity = tempElement.getChild("Quantity"); 
				Element tempUnity = tempElement.getChild("Unity");
				Element tempName = tempElement.getChild("IngredientName");

				System.out.println( "---------------------------------");
				System.out.println( "Menge: "+tempQuantity.getText() );
				System.out.println( "Einheit: "+tempUnity.getText() );
				System.out.println( "Zutat: "+tempName.getText() );
				System.out.println( "---------------------------------");
			}
```

Soweit so gut hab ich gedacht  ICh wollte halt nun die einzelnen Elemente auslesen und weiterverarbeiten. Nachdem ich mir aber bei "Element tempElement = (Element)ingredientIterator.next();" ne ClassCastException eingefangen habe, hab ich mir mal mit dem Debugger angesehen was wirklich in der Liste "ingredients" drinsteht.

->





Man sieht hier nu das in der Liste neben den 2 Listen mit den Zutaten (Element ingredient) auch ein Textobjekt mit einem Return "\n" drinsteht. Ist das ein Überbleibsel des Prettyprinters mit dem ich das XML File erstellt habe, bzw bietet JDOM mir ne Möglichkeit solche "unnützen" Textelemente auszufiltern?
Wenn net dann müsste ich bei der Iteration immer überprüfen, ob das aktuelle Objekt nicht vom Typ Text ist. Ich denke mal das es ne schickere Lösung gibt.


----------



## bygones (8. Jul 2004)

das 
	
	
	
	





```
List ingredients = ingredientList.getContent();
```
 verwirrt mich...
probiers mal mit

```
Element ingredientList = root.getChild("IngredientList");
List ingredients = ingredientList.getChildren("Ingredient");
```


----------



## Jaraz (8. Jul 2004)

Troilus hat gesagt.:
			
		

> List ingredients = ingredientList.getContent();


Versuch mal nicht den ganzen Content sondern nur das was du benötigst zu holen.

List ingredients = ingredientList.getChildren("Ingredient");

Gruß Jaraz

 :roll:  zu langsam  :wink:


----------

