Hallo!
Ich habe ein kleines Programm in dem ich eine XML per DOM parsen lasse. Dieses arbeitet nun rekursiv die ganzen Knoten rekursiv durch. Nun möchte ich nun die enthaltenen Werte in einer ArrayList speichern lassen. Nu wird aber nach meiner bisherigen Methode zu viel in die Liste eingespeichert, da natürlich dieser aufruf list.add(..) ebenfalls rekursiv aufgerufen wird. Nur finde ich bishher keine Idee das Problem zu beheben.
Statt das die folgende XML Datei
wird die liste jedoch wie folgt aufgebaut:
Nun benötige ich einen Denkanstoss bzw. bestenfalls einen Vorschlag wie ich dieses Problem behebe.
Gruß niesel
Ich habe ein kleines Programm in dem ich eine XML per DOM parsen lasse. Dieses arbeitet nun rekursiv die ganzen Knoten rekursiv durch. Nun möchte ich nun die enthaltenen Werte in einer ArrayList speichern lassen. Nu wird aber nach meiner bisherigen Methode zu viel in die Liste eingespeichert, da natürlich dieser aufruf list.add(..) ebenfalls rekursiv aufgerufen wird. Nur finde ich bishher keine Idee das Problem zu beheben.
Statt das die folgende XML Datei
Code:
<?xml version="1.0" encoding="UTF-8"?>
<bewerberliste>
<bewerber>
<vorname>Georg</vorname>
<name>Gutsche</name>
<beruf>Schlosser</beruf>
<fuhrerschein klasse="pkw">ja</fuhrerschein>
</bewerber>
<bewerber>
<vorname>Olaf</vorname>
<name>Vormelchert</name>
<beruf>Baecker</beruf>
<fuhrerschein klasse="lkw">ja</fuhrerschein>
</bewerber>
</bewerberliste>
wird die liste jedoch wie folgt aufgebaut:
Code:
Element bewerberliste
Element bewerber
Georg
Georg
Georg
Georg
Gutsche
Georg
Gutsche
Georg
Gutsche
Georg
Gutsche
Schlosser
Georg
Gutsche
Schlosser
Georg
Gutsche
Schlosser
Georg
Gutsche
Schlosser
ja
Georg
Gutsche
Schlosser
ja
Georg
Gutsche
Schlosser
ja
Georg
Gutsche
Schlosser
ja
Georg
Gutsche
Schlosser
ja
Gutsche
Schlosser
ja
Georg
Gutsche
Schlosser
ja
Olaf
Georg
Gutsche
Schlosser
ja
Olaf
Georg
Gutsche
Schlosser
ja
Olaf
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Baecker
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Baecker
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Baecker
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Baecker
ja
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Baecker
ja
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Baecker
ja
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Baecker
ja
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Baecker
ja
Georg
Gutsche
Schlosser
ja
Olaf
Vormelchert
Baecker
ja
Java:
static void unterbaumDurchlaufen(Node knoten) {
if (knoten == null) {
return;
}
anzahlKnoten++;
if(knoten.getNodeType()==Node.ELEMENT_NODE) {
anzahlElemente++;
System.console().printf("\n");
System.console().printf(" Element %s", knoten.getNodeName());
NamedNodeMap attribs = knoten.getAttributes();
int anz = attribs.getLength();
for(int i=0;i<anz;i++) {
Node tmp = attribs.item(i);
System.console().printf("\t Attribut "+tmp.getNodeName()
+ " = "+tmp.getNodeValue());
}//for
}//if
if(knoten!=null && knoten.getNodeType() == Node.TEXT_NODE) {
if (knoten.getNodeValue()!="") {
String value=knoten.getNodeValue().trim();
if (value.length() > 0) {
System.out.println("Der Wert des Knoten ist: "+value);
al.add(value);//Einfügen in ArrayList (Problem rekuriver merfacher Aufruf)
}
}
}
NodeList kinder = knoten.getChildNodes();
if(kinder == null)
return;
int anzahl = kinder.getLength();
for(int i=0; i<anzahl;i++)
unterbaumDurchlaufen(kinder.item(i));
for(String item: al) {
System.out.println(item);
}
}//unterbaumDurchlaufen
}
Nun benötige ich einen Denkanstoss bzw. bestenfalls einen Vorschlag wie ich dieses Problem behebe.
Gruß niesel