ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
12211
12211
EMPFEHLEN
-
16.09.04 09:07 #1
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Hier mal ein kleines Beispiel, wie ihr eine XML Datei auslesen und als Baumstruktur darstellen könnt. (Die Datei test.xml muss im selben Verzeichnis wie die Klasse liegen):
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
import java.awt.BorderLayout; import java.io.IOException; import java.util.Arrays; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTree; import javax.swing.tree.DefaultMutableTreeNode; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class JXMLTreeTest extends JFrame { private JTree tree; private JScrollPane scrollPane; public JXMLTreeTest() { super("JXMLTreeTest"); setDefaultCloseOperation(EXIT_ON_CLOSE); DefaultMutableTreeNode root = initTreeRoot("test.xml"); tree = new JTree(root); scrollPane = new JScrollPane(tree); getContentPane().add(scrollPane, BorderLayout.CENTER); pack(); setVisible(true); } private DefaultMutableTreeNode initTreeRoot(String file) { Document doc = null; try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); doc = builder.parse(this.getClass().getResourceAsStream(file)); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if (doc == null) return new DefaultMutableTreeNode("EMPTY"); Node rootNode = doc.getFirstChild(); DefaultMutableTreeNode root = new DefaultMutableTreeNode(rootNode.getNodeName()); treeWalk(rootNode, 0, root); return root; } 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(); int len = list.getLength(); for (int i = 0; i < len; i++) { Node child = list.item(i); childNode = new DefaultMutableTreeNode(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); } } public static void main(String[] args) { new JXMLTreeTest(); } public final static StringBuffer repeat(int n, char c) { char[] cA = new char[n]; Arrays.fill(cA, c); return (StringBuffer) new StringBuffer().insert(0, cA); } }
test.xml:
Code :1 2
<?xml version="1.0"?> <root><!--comment abc def ghi--><a><b>ABC0</b></a><a><b>ABC1</b></a><a><b>ABC2</b></a><a><b>ABC3</b><c>ABBDG</c></a></root>
HTH Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
in der Miniaturansicht... woher kommen die #Text im Baum?
-
Der Inhalt innerhalb des Wurzelelements kann aus verschiedenen Nodes bestehen. Es koennen weitere Elemente, PI oder eben Texte sein. Der XML Baum baut dafuer einen Knoten des Typs Text auf und speichert darin als Kind den Text extra... (Deshalb der #text Knoten und dann nochmal extra ein Knoten fuer den eigentlichen Text)
Hmm... selbst ein wenig verwirrend mein Text... wird aber einfacher wenn man sich das DOM anschaut.
Gruss,
-- Romsl
-
Und wie lösche ich solche "#text Knoten"!?
Bzw. lass ich mir meine XML Datei in einem JTree ausgeben, hab nur leider neben meinen richtigen Knoten auch Knoten die "#text" heißen. Diese Knoten möchte ich aber nicht!!
Bitte helft mir!!
Gruß Daniel
-
10.03.07 16:31 #5
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
schau mal hier:
http://www.tutorials.de/forum/java/2...arstellen.html
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Hallo,
ich probiere seid letzter Nacht folgendes:
Ich habe mir aus meiner XML Datei -->
(Auszug ...)
<?xml version="1.0"?>
<Geometrie>
<Wuerfel>
<Wuerfel_1 Description="Groesse: 5x5cm - Farbe: Rot"></Wuerfel_1>
<Wuerfel_2 Description="Groesse: 7x7cm - Farbe: Blau"></Wuerfel_2>
</Wuerfel>
</Geometrie>
einen JTree anzeigen lassen. So weit so gut. Ich lasse mir den Baum auch nur bis Wuerfel_01. bzw Wuerfel_02 ausgeben. Die Ausgabe des Baumes sieht also wie folgt aus:
Geometrie (Ordner)
+ Wuerfel (Ordner)
- Wuerfel_01 (Blatt)
- Wuerfel_02 (Blatt)
Was ich jetzt gern haben möchte, ist das wenn der User in dem Baum auf Wuerfel_01 klickt, also auf das Blatt, mir die Description dieses Tags (also das Attribut) auf einem JLabel oder der gleichen ausgegeben wird.
Kan mir jemand in diesem Fall weiter helfen!? Ich bekomme das einfach hin.
Die Theorie verstehe ich soweit, nur ich bekomm es nicht umgesetzt *argh*.
GrußGeändert von dan-ger (11.03.07 um 16:09 Uhr)
-
Hallo,
Ich habe hierzu auch eine Frage und zwar wenn ich jetzt im #comment teil der XML-Datei ein Element auskommentiert hätte.
Also sowas " <!-- <element> test </element> --> "kann ich dann dieses Element trozdem als Element und nicht als comment im Baum anzeigen lassen?
Wenn ja wie geht das ?
Gruß
daily
-
09.01.08 11:21 #8
- Registriert seit
- Jan 2008
- Beiträge
- 1
Hallo,
Ich habe mir das Programm http://www.tutorials.de/forum/java/2...arstellen.html von oben angesehen und es funktioniert super,
Meine Frage wäre, ob das auch in die andere Richtung funktioniert, also eine XML- Datei einlesen und in einem JTree darstellen, dann verändern und danach diesen JTree wieder in eine andere XML- Datei rausspeichern.
Ist das irgendwie leicht möglich oder muss man sich das selber ausprogrammieren?
Vielen Dank für die Antworten,
lgGeändert von PollerJava (09.01.08 um 11:24 Uhr)
Ähnliche Themen
-
Hohler Baum, B+Baum, Hash verfahren
Von sunnysunny81 im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 12.01.10, 16:28 -
Datenbank in XML abbilden
Von lernen.2007 im Forum JavaAntworten: 3Letzter Beitrag: 07.12.07, 00:43 -
Tabellenbeziehungen abbilden
Von nitt im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 14.05.07, 16:37 -
Datenbankstruktur abbilden
Von penntuete im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 06.04.05, 23:38 -
Ordnerstruktur in XML abbilden?
Von TigerFox im Forum PHPAntworten: 0Letzter Beitrag: 06.09.04, 19:08






Zitieren
Login





