2010-01-06 8 views
4

Je voudrais avoir un moyen d'afficher le contenu d'un fichier XML dans un JTree. J'ai déjà accompli cela en utilisant DOM, en mettant en œuvre un TreeModel personnalisé (et TreeCellRenderer). Cependant, il est très maladroit (beaucoup de solutions de rechange et de hackery) et plutôt rugueux sur les bords.Java: Comment afficher un fichier XML dans un JTree

Quelqu'un est-il au courant d'un moyen d'obtenir un JTree pour afficher le contenu d'un fichier XML, analysé avec SAX?

Merci!

Répondre

13

Voici le code que j'utilise. Il est basé sur l'API de Dom4J, mais vous pouvez facilement le convertir en API de votre bibliothèque XML préférée:

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