# XML mit JDOM auslesen



## freez (16. Nov 2006)

Hallo,

ich möchte eine XML Datei mit JDOM auslesen, aber an einer Stelle kommt mir eine Fehlermeldung:

Exception in thread "main" java.lang.ClassCastException: org.jdom.Text
	at aur.xmlMenuBean.getMenu(xmlMenuBean.java:45)
	at aur.xmlMenuBean.main(xmlMenuBean.java:97)

Vielleicht kann mir jemand helfen, da ich in Sachen XML blutiger Anfänger bin. Hier der Fehler verursachende Code (hier Zeile 7 ... in der Fehlermeldung "xmlMenuBean.java:45"):


```
//		Lesen des Wurzelelements des JDOM-Dokuments doc
		Element root =   doc.getRootElement(); 
		List nav0 = root.getContent();
		Iterator nav0Iterator = nav0.iterator();
		while ( nav0Iterator.hasNext()){
			
			Element nav0Element = (Element) nav0Iterator.next();
			
			//something more to do
		}
```

Hier noch die XML Datei, die ich auslesen möchte:


```
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<nav>
	<menu link="nav.htm" text="Hauptmenü 1" id = "010000">
		<uMenu link="nav.htm" text="Untermenü 1" id = "010100">
			<uUMenü link = "nav.htm" text = "UnterUntermenü 1" id = "010101"/>
			<uUMenü link = "nav.htm" text = "UnterUntermenü 2" id = "010102"/>
			<uUMenü link = "nav.htm" text = "UnterUntermenü 3" id = "010103"/>
		</uMenu>
		<uMenu link="nav.htm" text="Untermenü 2" id = "010200">
			<uUMenü link = "nav.htm" text = "UnterUntermenü 1" id = "010201"/>
			<uUMenü link = "nav.htm" text = "UnterUntermenü 2" id = "010202"/>
			<uUMenü link = "nav.htm" text = "UnterUntermenü 3" id = "010203"/>
		</uMenu>
		<uMenu link="nav.htm" text="Untermenü 3" id = "010300">
			<uUMenü link = "nav.htm" text = "UnterUntermenü 1" id = "010301"/>
			<uUMenü link = "nav.htm" text = "UnterUntermenü 2" id = "010302"/>
			<uUMenü link = "nav.htm" text = "UnterUntermenü 3" id = "010303"/>
		</uMenu>
		<uMenu link="nav.htm" text="Untermenü 4" id = "010400">
			<uUMenü link = "nav.htm" text = "UnterUntermenü 1" id = "010401"/>
			<uUMenü link = "nav.htm" text = "UnterUntermenü 2" id = "010402"/>
			<uUMenü link = "nav.htm" text = "UnterUntermenü 3" id = "010403"/>
		</uMenu>
	</menu>
	<menu link="nav.htm" text="Hauptmenü 2" id = "020000">
		//Something more ......
	</menu>		
</nav>
```

Ich weiß nun nicht, wo mein Problem liegt. Ich weiß, das der Cast auf "Element" nicht passt, aber ich weiß nicht, wie ich sonst an die Elemente unter Root ran komme. Ich befürchte, ich mache einen Grundlegenden Fehler. Aber welcher ist es?


----------



## byte (16. Nov 2006)

getContent() liefert nicht nur Elemente zurück:



> This returns the full content of the element as a List which may contain objects of type Text, Element, Comment, ProcessingInstruction, CDATA, and EntityRef.



So gehts:


```
Object o = nav0Iterator.next();
if(o instanceof Element) {
  Element nav0Element = (Element)o;
}
```


----------



## freez (16. Nov 2006)

Danke, das ging aber schnell.

Das hatte ich auch gelesen, aber irgendwie habe ich den Text anders interpretiert 

Ich probiers gleich aus


----------

