Frank: XML in JTree

Beitrag lesen

Hallo zusammen,

ich versuche eine XML-Struktur in einem JTree mit einer rekursiven Funktion abzubilden.

Hier das XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<menu>
 <menuitem>
  <name>1</name>
  <label>Startseite</label>
  <action></action>
  <target>_self</target>
  <link>index.html</link>
  <menu>
   <menuitem>
    <name>1.2</name>
    <label>Seite 1.2</label>
    <action></action>
    <target>_self</target>
    <link>index2.html</link>
   </menuitem>
  </menu>
 </menuitem>
 <menuitem>
  <name>2</name>
  <label>Seite 2</label>
  <action></action>
  <target>_self</target>
  <link>index3.html</link>
 </menuitem>
</menu>

Hier mein Code:

import java.util.Iterator;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import org.jdom.Document;
import org.jdom.Element;

public class TreeTest {

public static void xmlToJTree(Element menuroot, DefaultMutableTreeNode parentNode) {

Iterator allitems;
  Element currentMenuitem = null;
  allitems = menuroot.getChildren("menuitem").iterator();

while (allitems.hasNext()) {
   currentMenuitem = (Element) allitems.next();
   parentNode.add(new DefaultMutableTreeNode(currentMenuitem.getChild("label").getText()));
   if (currentMenuitem.getChildren("menu").size() > 0) {
    xmlToJTree(currentMenuitem.getChild("menu"), parentNode);
   }
  }
 }

public static void main(String[] args) {

DefaultMutableTreeNode initNode = new DefaultMutableTreeNode("Root");
  String pathtomenuxml = ApplicationPathProperties.getXMLPagePath() + "/1/menu/1.xml";
  Document xmlbasicdoc = XMLFunctions.getXMLDocument(pathtomenuxml);
  Element initLevel = xmlbasicdoc.getRootElement();

if (xmlbasicdoc.hasRootElement()) {
   xmlToJTree(initLevel, initNode);
  }

JTree testtree = new JTree(initNode);
  JFrame frame = new JFrame();
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.getContentPane().add(new JScrollPane(testtree));
  frame.pack();
  frame.setVisible(true);

}

}

Die Rekursion wird auch sauber durchlaufen, allerdings hängen im JTree alle Elemente auf der ersten Ebene... Mhmmm....

Was läuft da schief?

Vielen Dank schon mal und noch einen schönen Sonntagabend!
Frank