Tree aus XML-Datei

sabine

Mitglied
Hallo zusammen,

nach etwas längerer Pause habe ich mich jetzt wieder an mein kleines XML-Projekt gewagt und bin prompt am Fehler suchen. Zugegeben, im Netz habe ich Beiträge gefunden, die sich mit meiner Frage beschäftigen, eine Lösung konnte ich daraus leider nicht generieren.

Die Situation ist die folgende:

Aus einer XML-Datei möchte ich eine Baumstruktur erzeugen.
Die XML ist wie folgt aufgebaut:

Code:
<OBJECTTYPE> 
 <OBJECTSHEET id="A">
  <ATTRIBUTTE id="500"></ATTRIBUTE>
  <ATTRIBUTTE id="501"></ATTRIBUTE>
  <ATTRIBUTTE id="502"></ATTRIBUTE>
  <ATTRIBUTTE id="503"></ATTRIBUTE>
 </OBJECTSHEET>
 <OBJECTSHEET id="B">
 <OBJECTSHEET id="B1">
  <ATTRIBUTTE id="601"></ATTRIBUTE>
  <ATTRIBUTTE id="602"></ATTRIBUTE>
  <ATTRIBUTTE id="603"></ATTRIBUTE>
 </OBJECTSHEET>
 <OBJECTSHEET id="B2">
  <ATTRIBUTTE id="701"></ATTRIBUTE>
  <ATTRIBUTTE id="702"></ATTRIBUTE>
 </OBJECTSHEET>
 </OBJECTSHEET>
 <OBJECTSHEET id="C">
  <ATTRIBUTTE id="801"></ATTRIBUTE>
  <ATTRIBUTTE id="802"></ATTRIBUTE>
 </OBJECTSHEET>
</OBJECTTYPE>

Ich möchte das Ganze in w3c (DOM) umsetzen und verwende dafür den folgenden Code:
Code:
Element rootElement = document.getDocumentElement();

NodeList children = rootElement.getChildNodes();

Node current = null;

int count = children.getLength();

            for (int i = 0; i < count; i++ ) {

               current = children.item(i);

               if (current.getNodeType() == Node.ELEMENT_NODE) {

                  Element element = (Element)current;

                  System.out.println(((Element)children.item(i)).getAttribute("id") + " (" + element.getChildNodes().getLength() + ")");               
               }

            }

Ich erhalte jedoch nicht die richtige Anzahl der (Unter)Knoten und durch die Verschachtelung bekomme ich es auch nicht hin, auf das nächste Element bzw. dessen Attribute zuzugreifen.

Vielleicht könnte mir jemand von euch einen kleinen Stoß in die richtige Richtung geben?

Grüße
Sabine
 
Hallo,

vielen Dank für das Posten der Links. Zugegeben, hätte ich auch finden können...
Nun ja, mit den geposteten Beispielen konnte ich mein Vorhaben nun umsetzen.

Vielen Dank.

Grüße, Sabine.
 
Kurze Frage noch am Rande :)

Wenn ich auf das Attribut-Feld id in jedem Datensatz zugreifen möchte, kann ich dies wie folgt realisieren:

String name = ((Element)node).getAttribute("id");

Doch auf unterster Ebene wird mir ein Cast von NodeList hin zu Element und die Abfrage über .getAttribute("id") nicht gestattet. Jedoch wende ich dieses Vorgehen bereits an anderer Stelle an!

Code:
if (node.hasChildNodes()) {
            level++;
            System.out.println(repeat(level, ' ').append(nodeName));
            NodeList list = node.getChildNodes();
            String name = ((Element)node).getAttribute("id"); /*FUNKTIONIERT*/
            int len = list.getLength();
            for (int i = 0; i < len; i++) {
                Node child = list.item(i);
                
               
                ((Element)child).getAttribute("id");                
                System.out.println(((Element)child).getAttribute("id")); // FUNKTIONIERT NICHT
                NodeList list2 = child.getChildNodes();
                childNode = new DefaultMutableTreeNode(name + ":" + child.getNodeName());  /**/
                
                
                                
                parentNode.add(childNode);
                treeWalk(list.item(i), level, childNode);
                
            }
        } else {
            childNode = new DefaultMutableTreeNode(node.getNodeValue());
            System.out.println(
                repeat(level, ' ').append(node.getTextContent()));
            parentNode.add(childNode);
        }

Wie genau könnte ich auf das Feld Attribut zugreifen?

Grüße, Sabine
 
Zurück