XML mit doppelten Subknoten/Tags auslesen

NR76

Grünschnabel
Hallo!

Ich habe schon viel gegoogelt und in verschiedenen Foren gesucht, aber ich kann nicht das richige für mein Problem finden. Ich habe folgende XML-Datei:

XML:
<?xml version="1.0" encoding="ISO-8859-1" ?> 
<auftraege> 
<auftrag> 
      <nummer>1</nummer> 
      <bezeichnung>1;Installation Telefonanlange</bezeichnung> 
      <taetigkeit> 
            <nummer>000000</nummer> 
            <bezeichnung>000000;Gehen / Feierabend</bezeichnung> 
      </taetigkeit> 
      <taetigkeit> 
            <nummer>000001</nummer> 
           <bezeichnung>000001;TEST</bezeichnung> 
      </taetigkeit> 
</auftrag>
<auftrag> 
      <nummer>1028</nummer> 
      <bezeichnung>1028;Installation Telefonanlange</bezeichnung> 
      <selected>TRUE</selected><taetigkeiten> 
      <taetigkeit> 
            <nummer>000000</nummer> 
            <bezeichnung>000000;Gehen / Feierabend</bezeichnung> 
      </taetigkeit> 
      <taetigkeit> 
            <nummer>000006</nummer> 
            <bezeichnung>000006;Schlechtwetter</bezeichnung> 
            <selected>TRUE</selected></taetigkeit> 
      </taetigkeiten> 
</auftrag> 
</auftraege>

Zum einen möchte ich erstmal nur Nummer und Bezeichnung der Aufträge anzeigen lassen. Zu einem späteren Zeitpunkt möchte ich dann nur Nummer und Bezeichnung der Tätigkeiten (zum jeweils ausgewählten Auftrag) anzeigen lassen. Wie kann ich auf die Subknoten direkt zugreifen, da diese bei Auftrag und Tätigkeit gleich lauten? Und wie kann ich mir nur die Unterknoten (Tätigkeiten) von z.B. Auftrag 1028 anzeigen lassen? Bisher bekomme ich bei folgendem Code immer alle Bezeichnungen angezeigt.

Java:
                DocumentBuilderFactory factory  = DocumentBuilderFactory.newInstance(); 
                DocumentBuilder builderXML  = factory.newDocumentBuilder(); 
                Document docXML = builderXML.parse( new File("C:/xmlausgabe.xml")); 
                // ---- Get list of nodes to given element tag name ---- 
                NodeList auftragNodeList = docXML.getElementsByTagName("auftrag"); 
                for(int i=0; i<auftragNodeList.getLength(); i++) 
                { 
                    String hfBez; 
                    Element xmlElement = (Element) auftragNodeList.item(i); 
                    //NodeList xmlAuftragBez = xmlElement.getElementsByTagName("nummer"); 
                    NodeList xmlAuftragBez = xmlElement.getElementsByTagName("bezeichnung"); 
                    for (int j=0; j<xmlAuftragBez.getLength(); j++) 
                    { 
                        System.out.println("1"); 
                        hfBez = xmlAuftragBez.item(j).getTextContent(); 
                        System.out.println("2"); 
                        System.out.println(hfBez); 
                        System.out.println("3"); 
                    } 
                }

Danke im voraus
NR :confused:
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

ich war mal so frei und hab bei dir Code-Tags eingefügt. So ist das ganze übersichtlicher. Nutze diese bitte nächstes mal auch.

Für Java kannst du
[ java ] [ /java ]

und für xml setzt du halt XML ein.
Für allgemeinen Code, setzt du einfach nur code ein. Das ganze natürlich ohne Leerzeichen. Die hab ich jetzt nur mit geschrieben, da sie sonst nicht angezeigt werden.

MFG

Sascha
 
Zurück