# Mehrere gleichnamige Unterelemente auslesen



## Tyler (23. Mrz 2004)

Ich sitze nun schon seit Stunden am selben Problem:

Ich versuche ein Verzeichnisstruktur in XML zu definieren und dann mit jdom auszulesen. Ich stehe nun vor dem Problem, dass ich mehrere Unterelemente mit dem selben Name und Attributen haben. 

Ich finde leider kein Tutorial, das mir sagt, wie ich auf die Unterelemente zugreifen kann, am besten schön nacheinander.

Hier meine XML-Datei:

```
<?xml version="1.0" ?>

<menuDefinition>
	<style>
		<parent classNameText="menuParentText" classNameBackGround="" />
		<child classNameText="menuChildText" classNameBackGround="" />
	</style>
	
	<menuList>
		<menu>
			<name link="/test" value="parent" name="Startseite" />
			<name link="/test" value="child" name="Seite 2" />
			<name link="/test" value="child" name="Seite 3" />
			<name link="/test" value="child" name="Seite 4" />
			<name link="/test" value="child" name="Seite 5" />
		</menu>
		
		<menu>
			<name link="/test" value="parent" name="Startseite" />
			<name link="/test" value="child" name="Seite 2" />
			<name link="/test" value="child" name="Seite 3" />
			<name link="/test" value="child" name="Seite 4" />
		</menu>
	</menuList>
	
</menuDefinition>
```

Was muss ich tun, damit ich Zugriff auf alle Menüs und Namesdefinitionen habe (siehe Code)

Ich bin dankbar für jede Hilfe!


----------



## Guest (24. Mrz 2004)

Als erstes brauchst Du einen SacBuilder:

```
private SAXBuilder getSaxBuilder(){
		
		SAXBuilder tSaxBuilder;	
		// Den JDOM-Builder instanziieren, dabei die Version die über SaX parst verwenden. Validierung ist an (true)
		tSaxBuilder 	= 	new SAXBuilder();
		return tSaxBuilder;
	}
```

Dann die Knoten auslesen :

```
public void holeHauptknoten(){
		
		Document		tDocument;	
		Element		tRootElement;
		List		allg_spez;
		Iterator 		allg_spez_Iterator;
		Element 		zweiterKnotenXML;
		
		try{
			tDocument 			= 	getSaxBuilder().build(getkonfigxml());
			tRootElement 		= 	tDocument.getRootElement();
			allg_spez 			= 	tRootElement.getChildren();
			allg_spez_Iterator 	= 	allg_spez.iterator();
			
			while (allg_spez_Iterator.hasNext()){
				zweiterKnotenXML 	= 	(Element) allg_spez_Iterator.next();
				
				if(("allgemein").equals(zweiterKnotenXML.getName())){		
					List			allgemeineListe;
		List			param_Liste;
		Iterator 		allgemeineListe_Iterator;
		Iterator		param_Liste_Iterator;
		Element 		dritter_unter_Knoten;
		Attribute		attribut;
		Vector			parameterliste = new Vector();
		String			logPoint = "";
		
		allgemeineListe				= 	zweiterKnotenXML.getChildren();
		allgemeineListe_Iterator 	=	allgemeineListe.iterator();
		
		while(allgemeineListe_Iterator.hasNext()){
			dritter_unter_Knoten 	= (Element) allgemeineListe_Iterator.next();
			int status = 0;
			if(dritter_unter_Knoten.getName().equals("param")){
				param_Liste 			= 	dritter_unter_Knoten.getAttributes();
				param_Liste_Iterator 	= 	param_Liste.iterator();
				
				while(param_Liste_Iterator.hasNext()){
					attribut			= 	(Attribute) param_Liste_Iterator.next();
					
					if(attribut.getName().equals("LogPunkt")){
						logPoint		= 	attribut.getValue();
					}
					else{
						parameterliste.addElement(attribut.getValue());
					}
				}
			}
	
					
			}

				}
								
								}
			}
		
		catch (JDOMException e) { 
			e.printStackTrace(); 
		}
	}
```
Und noch die XML Datei für diesen Code...

```
<?xml version="1.0" encoding="UTF-8"?>
<alles>
	<allgemein>
		<param LogPunkt="de.parion.base.logger."/>
		<param Parameter="{excludedLogMessageTypes=null}"/>
			</allgemein>
</alles>
```

Ich hoffe das hilft Dir ein bisschen

Lieben Gruß


----------



## Tyler (24. Mrz 2004)

Danke für die ausführliche Antwort.
Ich werde es gleich ausprobieren!   THX


----------

