# XML IDs auslesen, erst X dann Y



## Isnogud (30. Nov 2012)

Hallo!


Ich habe ein Programm geschrieben welches alle IDs einer XML-Datei ausliest und dann in einer Liste abspeichert.

XML:


[XML]<?xml version="1.0" encoding="utf-8"?>
<Irgendwas xmlns:xsd="abc">
    <Schulgruppe groupId="Schulgruppe1234" alias="Schul Gruppe">
        <Schule>
            <Klassen id="Klasse--0" Klassenname="Klasse123">
                <Namen>
                    <Name id="Name--00""/>
                    <Name id="Name--01""/>
                    <Name id="Name--02"/>
                    <Name id="Name--03"/>
                </Namen>[/XML]

Mein Javacode sieht in etwa so aus:



```
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;



for (int iKlassen = 0; iKlassen < nodesKlassen.getlength(); iKlassen++) {

list = (objektXYZ.tuIrgendeineMethode(nodeKlassen.getAttributes().getNamedItem.("id").getTextContent)

          for(int iNamen = 0; iNamen < nodesNamen.getlength(); iNamen++) {
          list = (objektXYZ.tuIrgendeineAndereMethode(nodeKlassen.getAttributes().getNamendItem.("id").getTextContent, iKlassen);

          }
}
```

Das sind zwar nicht meine Originaldateien aber damit kann ich aufzeigen was mein Problem ist.
Und zwar habe ich nicht nur eine sondern mehrere "Klassen" in der XML-Datei. Wenn ich jetzt über die XML-Datei iteriere liest er mir alle Namen für beide Klassen aus.

**Kleine Anmerkung zum Java Code
Ich hatte es vorher wie es hier steht, jetzt ist die zweite Schleife losgelöst von der Ersten, sonst bekomme ich multiple Ergebnisse da jedes mal wenn eine KlassenID ausgelesen wird ALLES darauf folgende in die Listen geschmettert wird.


Ziel:
Ich lese alle IDs für eine Klasse aus, speichere die Namen mitsamt KlassenID in eine Liste und dann gehe ich zur nächsten Klasse und lese alle IDs der Namen aus und speichere diese mit der KlassenID. 

Also sowas wie:
Name--00, Klasse--0
Name--01, Klasse--0
Name--02, Klasse--0

Name--10, Klasse--1
Name--20, Klasse--1
Name--30, Klasse--1


Wüsste jemand eine Idee wie ich das hinbasteln könnte?
Meine Importe sind im JAVA-Code enthalten.


----------



## dayaftereh (30. Nov 2012)

Ich würde folgende Struktur machen:
[XML]
<class id="class-0">
   <name id="name-0" />
   <name id="name-1" />
   <name id="name-2" />
</class>
<class id="class-1">
   <name id="name-10" />
   <name id="name-11" />
   <name id="name-12" />
</class>
[/XML]

Beim einlesen der XML würde alle gefundenen <class> Element zu einem Objekt machen. Dieses Objekt haben dann wieder eine Liste von <name> Elementen bzw. Objekte. Diese Namen Objekte würde ich dann nach der ID Sortieren in dem jeweiligen class-Objekt. 

Die class-Objekte würde ich dann auch in einer Liste speichern und wieder nach ID Sortieren.


----------



## Isnogud (30. Nov 2012)

dayaftereh hat gesagt.:


> Ich würde folgende Struktur machen:
> 
> 
> Beim einlesen der XML würde alle gefundenen <class> Element zu einem Objekt machen. Dieses Objekt haben dann wieder eine Liste von <name> Elementen bzw. Objekte. Diese Namen Objekte würde ich dann nach der ID Sortieren in dem jeweiligen class-Objekt.
> ...




Ich werd's mal ausprobieren.
Ich meld mich wieder wenn's hakt oder funktioniert


----------

