Hallo ich lese folgende xml in einen Jtree ein:
der code zum einlesen:
soweit klappt das ganz gut. bis auf einen punkt.
ich möchte die Knoten im Jtree mit dem entsprechenden Name Attribute benamsen.(z.b gesture).
ist das möglich?
Code:
<?xml version="1.0" encoding="UTF-8" ?>
- <ANNOTATION>
- <SELECTION Name="gesture" DEFAULT="none">
<ELEMENT>none</ELEMENT>
<ELEMENT>open</ELEMENT>
<ELEMENT>closed</ELEMENT>
<ELEMENT>fist</ELEMENT>
<ELEMENT>L</ELEMENT>
<ELEMENT>Victory</ELEMENT>
</SELECTION>
- <SLECTION NAME="side" DEFAULT="none">
<ELEMENT>none</ELEMENT>
<ELEMENT>right hand</ELEMENT>
<ELEMENT>left Hand</ELEMENT>
</SLECTION>
- <SELECTION NAME="view" DEFAULT="none">
<ELEMENT>none</ELEMENT>
<ELEMENT>palm</ELEMENT>
<ELEMENT>back</ELEMENT>
<ELEMENT>side</ELEMENT>
</SELECTION>
</ANNOTATION>
der code zum einlesen:
Code:
import java.awt.*;
import javax.swing.*;
import javax.swing.tree.*;
import javax.swing.event.*;
import java.util.Iterator;
import java.util.List;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import java.io.File;
public class XMLTreeViewer extends JFrame{
private JTree baum;
private Document xmlDoc;
DefaultMutableTreeNode treenode;
public XMLTreeViewer(Document doc){
super();
this.xmlDoc = doc;
setSize(600, 450);
treenode = new DefaultMutableTreeNode("Annotation");
initialize();
}
private void initialize(){
baum = new JTree();
getContentPane().add(new JScrollPane(baum), BorderLayout.CENTER);
processElement(xmlDoc.getRootElement(), treenode);
((DefaultTreeModel)baum.getModel()).setRoot(treenode);
addWindowListener(new java.awt.event.WindowAdapter(){
public void windowClosing(java.awt.event.WindowEvent e){
baum = null;
treenode = null;
}
} );
setVisible(true);
}
private void processElement(Element elem, DefaultMutableTreeNode dmtn) {
String text = elem.getTextNormalize();
DefaultMutableTreeNode currentNode =
new DefaultMutableTreeNode(text);
processAttributes(elem, currentNode);
Iterator children = elem.getChildren().iterator();
while(children.hasNext())
processElement((Element)children.next(), currentNode);
dmtn.add(currentNode);
}
public void processAttributes(Element elem, DefaultMutableTreeNode dmtn) {
Iterator atts = elem.getAttributes().iterator();
while(atts.hasNext()){
Attribute att = (Attribute) atts.next();
DefaultMutableTreeNode attNode =
new DefaultMutableTreeNode(att.getValue());
}
}
public static void main(String args[])
throws Exception
{
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("Annotation.xml"));
XMLTreeViewer viewer = new XMLTreeViewer(doc);
viewer.addWindowListener(new java.awt.event.WindowAdapter(){
public void windowClosing(java.awt.event.WindowEvent e){
System.exit(0);
}
} );
}
}
soweit klappt das ganz gut. bis auf einen punkt.
ich möchte die Knoten im Jtree mit dem entsprechenden Name Attribute benamsen.(z.b gesture).
ist das möglich?