I would like to have a way to display the contents of an XML file in a JTree
. I have already accomplished this using DOM, by implementing a custom TreeModel
(and TreeCellRenderer
). However it is very clunky (much workaround-ery and hackery) and rather rough around the edges.
Is anyone aware of a way to get a JTree
to display the contents of an XML file, parsed with SAX?
Thanks!
Here's the code that I use. It is based on the API of Dom4J, but you can easily convert it to the APIs of your favorite XML library:
public JTree build(String pathToXml) throws Exception {
SAXReader reader = new SAXReader();
Document doc = reader.read(pathToXml);
return new JTree(build(doc.getRootElement()));
}
public DefaultMutableTreeNode build(Element e) {
DefaultMutableTreeNode result = new DefaultMutableTreeNode(e.getText());
for(Object o : e.elements()) {
Element child = (Element) o;
result.add(build(child));
}
return result;
}