我希望能够在JTree
中显示XML文件的内容。通过实现自定义TreeModel
(和TreeCellRenderer
),我已经使用DOM完成了这项工作。然而,它是非常笨重的(很多变通方法和hackery)并且边缘相当粗糙。
是否有人知道如何让JTree
显示XML文件的内容,用SAX解析?
谢谢!
答案 0 :(得分:13)
这是我使用的代码。它基于Dom4J的API,但您可以轻松地将其转换为您喜欢的XML库的API:
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;
}