Java:如何在 JTree 中显示 XML 文件

标签 java swing sax jtree treemodel

我希望有一种方法可以在 JTree 中显示 XML 文件的内容。我已经使用 DOM 通过实现自定义 TreeModel(和 TreeCellRenderer)完成了此操作。然而,它非常笨重(很多变通方法和 hackery)并且边缘相当粗糙。

有没有人知道一种方法可以让 JTree 显示用 SAX 解析的 XML 文件的内容?

谢谢!

最佳答案

这是我使用的代码。它基于 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;         
}

关于Java:如何在 JTree 中显示 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2011775/

相关文章:

java - Java/Swing 有任何(真正的)Office 2007 外观吗?

java - 使用默认 sax 解析器时,jaxb unmarshal 会被精心制作的 xml 滥用吗?

Java Sax XML 解析器,解析 XML 标签内的自定义 "values"?

java - 使用 Math.random() 每次以随机顺序生成 0, 1, 2, 3 (偶数),不重复?

java - 下拉菜单旁边的 "options"按钮应该使用 "..."还是 ">>"?

Java JApplet 在移动旧矩形后不会将其删除

java - 当文档以小写 <!doctype 开头时, Karate HTML 解析抛出 SaxException

java - 自动启动 GUI Java jar Lubuntu

java - 从 JFrame 获取字符串值到 Java 类

java - GridBagLayout 缺少 JTextFilds