2010-01-06 5 views
4

Я хотел бы иметь способ отобразить содержимое XML-файла в JTree. Я уже выполнил это с помощью DOM, выполнив заказ TreeModelTreeCellRenderer). Однако он очень неуклюжий (много обходных и хакерских) и довольно грубый по краям.Java: Как отобразить XML-файл в JTree

Кто-нибудь знает, как получить JTree для отображения содержимого XML-файла, проанализированного с помощью SAX?

Спасибо!

ответ

13

Вот код, который я использую. Он основан на API Dom4J, но вы можете легко преобразовать его в API вашей любимой библиотеки XML:

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;   
}