JavaFX Wie Treeview aus xml erzeugen

BergJava

Aktives Mitglied
Hallo,

in C#.Net habe ich einige Lösungen gefunden aber nicht in Java.

Ich würde gerne aus einem XML . file ein treeview erzeugen?

Danke
 
Hallo und Danke.

Das meiste bezieht sich auf Jtree, ich habe aber leider TreeView (JavaFX)

Habe schöne Beispiel mit DefaultMutableTreeNode gefunden, aber das gibt Crash mit TreeView??
 
Hallo habe jetzt was geschrieben was fast klappt:

Java:
private void openFile(File f){
    try{
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
  DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
  Document doc = dBuilder.parse(f);
  doc.getDocumentElement().normalize();
   NodeList nList = doc.getElementsByTagName("Einkauf");

  for (int temp = 0; temp < nList.getLength(); temp++) {
     Node nNode = nList.item(temp);
     if (nNode.getNodeType() == Node.ELEMENT_NODE) {
        Element eElement = (Element) nNode;
         TreeItem<String> parent = tree.getTreeItem(temp);
    if (parent==null) {
      parent = tree.getRoot();
   
    }

     final TreeItem<String> newNode = new TreeItem<String>(getTagValue("Brot", eElement));
    parent.getChildren().add(newNode);
    parent.setExpanded(true);
        System.out.println("First Name : " + getTagValue("Brot", eElement));
      
     }
  }

   
    }catch(Exception e){
       
        e.printStackTrace();}
 
    }
   
    private static String getTagValue(String sTag, Element eElement) {
  NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
        Node nValue = (Node) nlList.item(0);
return nValue.getNodeValue();
  }

Aber mein TreeView hat natürlich noch weiter Tags

Die XML sieht so aus

Code:
<J>
<menu>
<name>Hauptmenü</name>
<desc>Hauptmenü</desc>
<Item>
<name>Einkauf</name>

</Item>
</menu>

<menu>
<name11>Einkauf</name11>

<Item>
<name222>Brot</name222>

</Item>
<Item>
<name222>Salz</name222>

</Item>

</menu>
</J>

Wie mache ich das?
 
Hallo. Danke das hat geklappt ein fortschritt.

Ich habe das Beispiel
Java:
buildTreeModelByTreeWalk(Node node,TreeItem parentTreeNode)
genommen.

Ich hätte aber gern das er mir zBsp bei

<1>
<b>Text</b>
</1>

Hier zeigt er mir die 1 als Node an und dann den Text, wie schaffe ich es das er mir eine Node macht aber nur mit dem Text als Node.
Also nicht
1
-Text

sondern
Text


Wenn ich nur nach Textinhalt abfrage macht er das, aber er hält die Nodes leer, weil da eigentlich die 1 stehen müsste.

-
Text
 
Also ich war jetzt sehr lange nicht mehr aktiv im Forum, aber deine Posts sind noch immer so konfus wie damals!!! 😵

Versuche doch bitte einmal folgenden Ansatz: Bevor du dich auf die Oberfläche stürzt, bringe erst einmal das XML-File in eine Objekt-Struktur.
Die einfachste Art wird womöglich JAXB sein. Dafür annotierst du ein paar Modelklassen, um sie auf deine (in dem Fall hoffentlich fixe) XML-Struktur zu mappen.

Dann folgst du z.B. dieser einfachen Anleitung, wie man einen TreeView erstellt:
http://docs.oracle.com/javafx/2/ui_controls/tree-view.htm

Also: Root-TreeItem erstellen, dann beginnen, durch die Kind-Element des XML-Root-Elements iterieren und sie anfügen.
Trees sind vielleicht mitunter etwas umständlich, aber am Ende eigentlich auch keine Hexerei. Am besten ist es halt "Devide & Conquer" anzuwenden, also das Gesamt-Problem erst einmal in kleinere - und hoffentlich leichter zu lösende - Teilprobleme zu zerlegen.
 
BTW: Mache mal ein XML, wie es am Ende aussehen wird. Oder gebe uns ein XML-Schema. Mit letzterem kannst du dir sogar viel Handarbeit sparen und daraus automatisiert (mittels dem im JDK enthalten Tool "xjc") die fix und fertig annotierten Klassen generieren lassen.
Und zur Not kannst du dir auf diversen Seite im Netz auch aus einer finalen XML-Struktur ein (allerdings recht statisches) XML-Schema generieren lassen.
 

Zurück
Oben