XML einlesen

XRayT1Raycer

Mitglied
Hallo community,

ivh bin gerade dabei mit Java ein XML-File einzulesen. Klappt sowit auch wunderbar mit
Java:
NodeList nl = doc.getElementsByTagName()

Allerdings verzweifel ich gerade an einer Stelle:
[XML]
<kontakte>
-<kontakt typ="kaTelefon">
<text>01236-55569874574</text>
</kontakt>
-<kontakt typ="kaTelefon">
<text>03265-5695485456854</text>
</kontakt>
-<kontakt typ="kaFax">
<text>000000-225548554</text>
</kontakt>
-<kontakt typ="kaBank">
<text>654646465465464646464</text>
</kontakt>
</kontakte>[/XML]

Ich brauche nur die Telefonnummer, mit
Java:
NodeList nl = doc.getElementsByTagName("text")
komm ich hier logischerweise nicht weiter...

Ich wäre für Tips dankbar...
 
Es gibt mehrere Wege, XML in Java einzulesen: SAX, DOM, StAX und JAXB, wovon JAXB bei bekanntem XML-Format normalerweise das bequemste ist. Vielleicht solltest du das mal probieren, anstatt dich mit Nodes herumzuärgern: JAXB hello world example
 
Das Einlesen der XML an sich ist nicht das Problem, das bekomme ich mit FOM ohne Probleme hin.
Nodes funktionieren für alle anderen Werte die ich aus der XML lesen möchte auch ohne Probleme...

Mir fällt nur irgendwie absolut nicht ein wie ich an die Telefonnummer kommen kann da es "text" halt mehrfach gibt...Vermutlich sehe ich den Wald vor lauter Bäumen nicht....
 
Ich weiß jetzt die Befehle nicht aus dem Hut, aber ich würde mir erst die Liste aller Kontakt-Nodes geben lassen, dann den "richtigen" herausfiltern, und nur von dem den Unterknoten geben lassen.
 
Wenn ich mir die "kontakt"-Nodes hole und anschließend die Liste ausgeben will kommt es zum immer gerne genommen NullPointer....

Habs auch schon getAttibutes() versucht, aber dann bekomme ich als Wert "kaTelefon" aber halt nicht die eigentliche Nummer....
 
Habs jetzt erstmal so gelöst

Java:
            NodeList knotenListe = doc.getElementsByTagName("kontakt");
            NodeList tel = doc.getElementsByTagName("text");
            
           
           int anzahl = knotenListe.getLength();            
           String[] telNummern=new String[nl.getLength()];

           for (int i=0; i<anzahl; i++) {
                Element knoten = (Element) knotenListe.item(i);
                String ausgabe = knoten.getAttribute("typ");
            if(ausgabe.startsWith("kaTelefon")){
                telNummern[i]=tel.item(i).getFirstChild().getNodeValue();
            }
       
        }

funktioniert zwar nur solange jeder datensatz nur eine telefonnummer hat, aber ist schonmal ein anfang...
 

Zurück
Oben