Hallo!
Ich möchte einen Personenknoten aus dem Xml-Dokument an eine spezielle rekursive Funktion übergeben, welche true oder false zurückgibt je nachdem ob Treffer vorliegt.
die Suchoptionen werden in Form einer Hashmap übergeben.
(z.B. Name(Schlüssel) , Wasser und Adresse(Schlüssel), willywasser@web.de)
ich habe das ganze mit loggen lassen und er gibt mir auch einen Treffer an aber er übergibt ihn nicht an die Hauptfunktion.
Wo liegt mein Fehler?
XML-Datei:
Hauptfunktion: hier wird die Person an eine durchsuchende rekursive Funktion übergeben und wenn ein Treffer vorliegt, als TreeSet an den Rest des Programms weitergeleitet:
Funktion zum Durchsuchen der übergebenen Nodelist einer Person:
Ich möchte einen Personenknoten aus dem Xml-Dokument an eine spezielle rekursive Funktion übergeben, welche true oder false zurückgibt je nachdem ob Treffer vorliegt.
die Suchoptionen werden in Form einer Hashmap übergeben.
(z.B. Name(Schlüssel) , Wasser und Adresse(Schlüssel), willywasser@web.de)
ich habe das ganze mit loggen lassen und er gibt mir auch einen Treffer an aber er übergibt ihn nicht an die Hauptfunktion.
Wo liegt mein Fehler?
XML-Datei:
Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<Verzeichnis>
<Person>
<Index>1244735513374</Index>
<Name>Karlsen</Name>
<Vorname>Bärbel</Vorname>
<Strasse>Am Karlsberg</Strasse>
<Nr>17</Nr>
<Plz>53684</Plz>
<Ort>Karlsburg</Ort>
<Msn>
<Landesvorwahl>0049</Landesvorwahl>
<Vorwahl>04875</Vorwahl>
<RufNr>369852</RufNr>
<Typ>Tel</Typ>
<Nutzung>privat</Nutzung>
<Bemerkung>keine</Bemerkung>
</Msn>
<Msn>
<Landesvorwahl>0049</Landesvorwahl>
<Vorwahl>0176</Vorwahl>
<RufNr>5248745</RufNr>
<Typ>Handy</Typ>
<Nutzung>privat</Nutzung>
<Bemerkung>keine</Bemerkung>
</Msn>
</Person>
<Person>
<Index>1244733096384</Index>
<Name>Wasser</Name>
<Vorname>Willy</Vorname>
<Strasse>Wasserstr.</Strasse>
<Nr>12</Nr>
<Plz>12534</Plz>
<Ort>Wasserstadt</Ort>
<Msn>
<Landesvorwahl>0049</Landesvorwahl>
<Vorwahl>03859</Vorwahl>
<RufNr>24153</RufNr>
<Typ>Tel</Typ>
<Nutzung>privat</Nutzung>
<Bemerkung>keine</Bemerkung>
</Msn>
<Mail>
<Adresse>WillyWasser@web.de</Adresse>
<Info>keine</Info>
</Mail>
</Person>
</Verzeichnis>
Hauptfunktion: hier wird die Person an eine durchsuchende rekursive Funktion übergeben und wenn ein Treffer vorliegt, als TreeSet an den Rest des Programms weitergeleitet:
Java:
// Einträge werden gesucht
public TreeSet<Person> searchEntry(HashMap<String,String> hm){
TreeSet<Person> ts = new TreeSet<Person>();
nl = doc.getElementsByTagName("Person");
int temp = nl.getLength(); // Anzahl der Personen in XML Datei
for (int i=0;i<temp;i++){ // gehen jetzt die einzelnen Personen der Nodelist nl durch
System.out.println(""+i+". Person wird übergeben");
if(recursiveMethod(nl.item(i), hm, false,0)){
ts.add(changeNodeToPerson(nl.item(i).getChildNodes()));
System.out.println("Person wurde zugefügt");
}
}
return ts;
}
Funktion zum Durchsuchen der übergebenen Nodelist einer Person:
Java:
public boolean recursiveMethod(Node n, HashMap<String,String> hm, boolean treffer, int funktionsaufrufe){
if (n.hasChildNodes()){
for(int i=0;i<n.getChildNodes().getLength();i++){
recursiveMethod(n.getChildNodes().item(i), hm, treffer, funktionsaufrufe+1);
}
}else{
System.out.println(n.getTextContent()+" -> n hat keine Kindknoten");
for(String a: hm.keySet()){ // Hashmap wird hier durchgegangen
if(n.getNodeName().equals(a)){
if(n.getTextContent().equals(hm.get(a))){
treffer = true;
System.out.println("treffer");
}else treffer = false;
}
}
}
System.out.println("Anzahl: "+funktionsaufrufe);
return treffer;
}