Aus XML-File eine Baumstruktur erzeugen

sabine01

Mitglied
Hallo zusammen,

seit einigen Tagen versuche ich, aus einer XML-Datei eine Baumstruktur zu erzeugen. Dafür verwende ich ein Beispiel aus dem Internet.

Die auszulesende Datei hat die folgende Sturktur:
[XML]
<OBJECTTYPE id="4">
<OBJECTSHEET id="A">
<ATTRIBUTE id="500"></ATTRIBUTE>
<ATTRIBUTE id="501"></ATTRIBUTE>
<ATTRIBUTE id="502"></ATTRIBUTE>
<ATTRIBUTE id="503"></ATTRIBUTE>
</OBJECTSHEET>
<OBJECTSHEET id="B">
<OBJECTSHEET id="B1">
<ATTRIBUTE id="601"></ATTRIBUTE>
<ATTRIBUTE id="602"></ATTRIBUTE>
<ATTRIBUTE id="603"></ATTRIBUTE>
</OBJECTSHEET>
<OBJECTSHEET id="B2">
<ATTRIBUTE id="701"></ATTRIBUTE>
<ATTRIBUTE id="702"></ATTRIBUTE>
</OBJECTSHEET>
</OBJECTSHEET>
<OBJECTSHEET id="C">
<ATTRIBUTE id="801"></ATTRIBUTE>
<ATTRIBUTE id="802"></ATTRIBUTE>
</OBJECTSHEET>
</OBJECTTYPE>
[/XML]

Die Datei lese ich unter Verwendung des Beispielcodes aus. Mein Problem besteht jetzt darin, auf die einzelnen Attributfelder zuzugreifen. Ich erhalte die Attribute von OBJECTTYPE, OBJECTSHEET und ATTRIBUTE jedoch immer um eine Ebene versetzt.

Bsp:
OBJECTSHEET bekommt ID von OBJECTTYPE (4)
ATTRIBUTE bekommt ID von OBJECTSHEET (A,B,C)

Und auf die ID von ATTRIBUTE kann ich nicht zugreifen.

Hat möglichweise jemand von euch eine Idee? Über einen Lösungsvorschläg wäre ich sehr erfreut :D

Java:
 public static void treeWalk(
        Node node,
        int level,
        DefaultMutableTreeNode parentNode) {
 
 
    	String nodeName = node.getNodeName();
        DefaultMutableTreeNode childNode = null;
 
        if (node.hasChildNodes()) {
            level++;
            System.out.println(repeat(level, ' ').append(nodeName));
            NodeList list = node.getChildNodes();

            String name = ((Element)((Node)list)).getAttribute("id"); /* HIER LESE ICH EIN*/
            
            
            int len = list.getLength();
            for (int i = 0; i < len; i++) {
                Node child = list.item(i);               
               
                                
                                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);
        }
    }
 

reibi

Top Contributor
Hi

Grundsätzlich : Dein Problem ist zu speziell.
Hab rausgefunden, das Du mit Baumstruktur einen Baum in Swing meinst. Das sind zwei ganz grobe Themen die Du sepasrat abhandeln musst. Sonst wird Dir auch keiner antworten. Dann ist noch wichtig den Titel Deines Beitrags ganz konkret zu schreiben. Dann gibts mehr Hoffnung auf Hilfe. Diese Erfahrung habe ich zumindest gemacht.

Ich würde Dein Problem erstmal teilen in.

-XML auslesen(Elemente, Attribute) in der XML-Baumstruktur
-Swing-Tree erstellen

Vielleicht findest Du ja schon bestehende Beiträge, ansonsten mach einfach n neues Thema auf.

Gruss und viel Glück ;-)
 

sabine01

Mitglied
Hallo,

danke zunächst für eure Kommentare.

@reibi, Grundsätzlich möchte ich eigentlich nur die XML auslesen und die Struktur in einem Array abspeichern. Visualisiert in einem Strukturbaum ist später dran. Das Einlesen von Attributen habe ich bereits gemacht (direkt auf die Elemente verwiesen). Dies ist hier jedoch nicht wirklich Zielführen, da ich exakt die Struktur der XML-Datei abbilden möchte.

@Noctarius, Die XML liegt ohne XSD im Intranet. Es könnte zu jedem Zeitpunkt eine Modifikation der Struktur vorgenommen werden. Das heißt, möglichst direkt aus der XML lesen und die dazugehörige Struktur im Array abspeichern ist das Ziel.

Grüße, die Sabine
 

Wildcard

Top Contributor
EMF generiert dir auch gleich die extrem praktischen ItemProvider. Damit kannst du die XML in SWT direkt als Baum anzeigen und für Swing musst du nur einen einfachen Wrapper schreiben der aus einem ItemProvider ein Swing TreeModel macht.
 

reibi

Top Contributor
Hi

...Grundsätzlich möchte ich eigentlich nur die XML auslesen und die Struktur in einem Array abspeichern...

Also die Struktur ist ja mehrdimensional, und ein Array nur eindimensional. Deshalb würde das grundsätzlich ja nicht gehen.

- Willst Du eine Ebene in einem Array(oder Liste) speichern?
zB Alle ATTRIBUTe aus dem Element OBJECTSHEETmit der id="A"


oder
- alle Ebenen in einem Array speichern
Dann musst Du ein mehrdimensionales Array bauen ... also ein array in einem array usw.

Das würde ich aber nicht so lösen, da das ab der 12ten Dimension ganz schön haarig fürs Verständis käme ;-)

Noch was zur Benamselung Deines XML Files:
Also die STruktur ist ja nicht schlecht. Aber das Element mit dem Namen "ATTRIBUT" sollte anders heissen. Ein Attribut in XML ist das was bei Dir zB -->id="A" <-- heisst. Und damit es nicht zu Begriffsverwechselungen kommt, verwendet man dazu einen anderen Namen für das Tag.

Gruss
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Xml file gegen eine DTD validieren XML & JSON 3
G Problem beim schreiben von XML in eine File XML & JSON 2
E JAXB und java.nio.file.Path XML & JSON 4
Trèfle Formatierung v. JSON File XML & JSON 7
L login - Java IOException jaas.config File or Directory not present XML & JSON 1
G Probleme mit Jsoup in .jar File XML & JSON 11
K JAR-File mit XML-Datei XML & JSON 1
JBoby Yaml File lesen und in Objekte umwandel (SnakeYAML / YamlBeans) XML & JSON 0
O XML Zugriff auf Entity File XML & JSON 0
B xsd-Datei ins jar file XML & JSON 5
S XLSX-File NoSuchMethodError XML & JSON 7
M SEPA XML file XML & JSON 11
S Xml File für den Aufbau einer anderen Xml Datei XML & JSON 6
S XML file lässt sich in Eclipse nicht erstellen XML & JSON 2
M <root> node in bestehendes XML-File XML & JSON 8
jstei001 .xsd File wärend der Laufzeit einlesen und XMl rausschreiben XML & JSON 5
L Datenstruktur in XML-File schreiben XML & JSON 2
Q XML-File als Objekt in Java XML & JSON 6
G DXF-File schreiben XML & JSON 17
GUI-Programmer java.io.File aus .jar beziehen XML & JSON 6
B XML file erstellen und in lesbarer form speichern XML & JSON 2
M XML File generieren XML & JSON 3
N XML File aus Internet korrekt mit absätzen formatiert abspeichern XML & JSON 10
J xmlParser/-Writer: DTD in seperates File auslagern XML & JSON 4
S Premature end of file XML & JSON 7
T File öffnen XML & JSON 6
B XML file für schtasks XML & JSON 5
G Simples XML File einlesen mit JDom. Prefix not bound ? XML & JSON 2
G Xml File schematisch auslesen XML & JSON 2
J File objekt in xml speichern? XML & JSON 12
G XMLEncoder: discarding statement LinkedList.add(File) XML & JSON 16
X XML File auslesen/parsen u. in ne Hashmap speichern XML & JSON 2
M Unhierarchisches XML-File mit DOM-Parser auswerten XML & JSON 5
M XML File während Applet-Start auslesen? XML & JSON 10
X Einzelne Tags rausnehmen aus einem großen XML-file XML & JSON 4
E XOM setzen von XML-Schema declaration beim erzeugen XML-File XML & JSON 2
M XSL-File für Transformation verwenden XML & JSON 3
M XML-File verabeiten XML & JSON 19
A XML-File auslesen, alles leer? XML & JSON 2
S Geändertes XML-File wieder abspeichern. XML & JSON 10
D XML-file mit Eclipse erstellen + Namespaces XML & JSON 2
A html-File nach txt-File konvertieren XML & JSON 15
K XML to file geht nicht :( XML & JSON 4
A Internetinhalte auslesen und in einem XML-File speichern XML & JSON 4
T select-statement aus mysql in ein xml-file umwandeln XML & JSON 3
J XML File updaten XML & JSON 2
A XML-file an der Konsole ausgeben XML & JSON 4
D In ein XML File meinStyleSheet.css eintragen? XML & JSON 9
J Client für WebService programmieren (aus WSDL-File) XML & JSON 15
R wie kann ich ein xml file in einen string einlesen? XML & JSON 2
M *.group() in File auslesen XML & JSON 4
A XML-File ausgeben XML & JSON 2
W aus XML-File gelesenes als Methodenaufruf verwenden XML & JSON 5
T Elemente aus XML-File löschen (JDom) XML & JSON 9
T [JDOM] XML File, neue Daten hinzufügen XML & JSON 5
D Aus Java XML-File an PHP-Skript senden: Encodingproblem? XML & JSON 3
T Prob: Auslesen XML File mit JDOM XML & JSON 2
B DOM oder HTML File drucken "wie ein Browser es zeigen w XML & JSON 3
I Mit Hibernate eine XML-Datei in eine Tabellenspalte einlesen. XML & JSON 1
S Muss ich bei JAXB immer noch eine zusaetzliche List-Wrapper Klasse erstellen wenn ich mehrere Objekte serialisieren will..? XML & JSON 1
D Innerhalb einer Property auf eine andere verlinken? XML & JSON 3
P wie kriege ich eine *.dtd Datei mit in die ausführbare *.jar? XML & JSON 2
E JTreedaten in eine XML Datei speichern XML & JSON 3
L Mit Hilfe von POI eine Tabelle ohne Rahmen in Word schreiben XML & JSON 2
M Wie kann ich eine unter SAX eingelesene XML bearbeiten? XML & JSON 4
D eine Schema für ein andere Schema XML XML & JSON 14
ruutaiokwu xml nur bis auf eine bestimmte ebene parsen mit javax.xml... XML & JSON 5
F Wie bringe ich zwei xml Datein mit eine jar zum laufen? XML & JSON 4
F SAX Parser siehe nichts auf dem Konsole weder eine Fehlermeldung noch eine Ergebnis XML & JSON 6
B muss standalone angegeben werden sobal eine DTD vorhanden ist? XML & JSON 6
G XSL: Element über eine Variable ermitteln XML & JSON 4
M Frage zu Erklärung im Online book "Java ist auch eine I XML & JSON 4
T Wie einen String(XML Inhalt) in eine XML Datei speichern? XML & JSON 8
P XML Dateien zusammenführen und in eine XML speichern XML & JSON 7
A Mehrere Anwender sollen auf eine XML-Datei zugreifen XML & JSON 4
L mit Java eine HTML-Datei erstellen XML & JSON 3
A xml-schema aus wsdl auslagern in eine eigene xsd-Datei XML & JSON 3
G xml einlesen und bestimmte Elemente an eine gui_Klasse überg XML & JSON 25
G Mit JAXP in eine Datei schreiben XML & JSON 2
T Newbie Frage.aus Java eine XML Datei erstellen? XML & JSON 7
G Prüfen ob eine XML-Datei "well-formed" ist XML & JSON 2
G Xml Elemente in eine Liste abspeichern! XML & JSON 2
D Suche eine OnlineQuelle für SAX XML & JSON 2
S aus XML mit JAXB zu Baumstruktur XML & JSON 3
M Liste in Baumstruktur einlesen XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben