文档章节

使用Dom4J遍历Xml文件并获得相应Jtree模型

晨曦断罪
 晨曦断罪
发布于 2016/12/28 12:47
字数 286
阅读 34
收藏 0

最近遇到一个问题,目标是将指定xml文件的数据进行解析,获得数据后进行加工并产生相应的Jtree模型。在网上百度发现dom4j结合遍历即可解决该问题。

import java.net.URL;
import java.util.Iterator;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class MineTree {
    URL configpath;//指定Xml文件在项目中的位置
    Document doc;
    Element root;
    DefaultMutableTreeNode rootTree ;
    public MineTree() {
        configpath = this.getClass().getResource("/xml文件配置.xml");//将URL转换为字符串交由SAXReader解析
        getTree();
    }
    public void getTree() {
        try {
            System.out.println(configpath);
            SAXReader saxReader=new SAXReader(); 
            doc=saxReader.read(configpath);     
            root = doc.getRootElement();//使用dom4j提供的API获得XML的根节点
            System.out.println("Root element :" + doc.getRootElement().getName());
            rootTree =new DefaultMutableTreeNode(new String(root.getName()));//创建Jtree数据模型的根节点
            getTreenodeNames(root,rootTree);



        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    /* @param @author DefaultMutableTreeNode : Jtree中的数据模型node Element:Xml中获得的元素 */
    public void getTreenodeNames(Element e,DefaultMutableTreeNode node) {

        Iterator iter = e.elementIterator();
        while (iter.hasNext()) {
            Element childEle = (Element) iter.next();
            DefaultMutableTreeNode child = new DefaultMutableTreeNode(new String(childEle.getName()));
            node.add(child);
            System.out.println(childEle.getName());
            if (childEle.nodeCount()==0) {
                continue;
            }
            else{
                getTreenodeNames(childEle,child);//遍历
            }

        }
    }

    public static void main(String[] args) {
        MineTree tree  =  new MineTree();
        JTree jTree = new JTree(tree.rootTree);
        JFrame frame = new JFrame("test");
        frame.setVisible(true);
        frame.setBounds(200, 200, 400, 300);
        frame.add(jTree);
    }

}

© 著作权归作者所有

晨曦断罪
粉丝 0
博文 16
码字总数 12398
作品 0
石家庄
程序员
私信 提问
用JTree子节点触发添加一个JTabbedPane选项卡

用AWT/Swing写了一个签到系统,遇到一个问题百思不得其解啊- - 编写的服务端界面分为三块,左上为一个JTree的面板,左下是一个JTable的面板,右边是一个JEditorPane用来显示客户端和服务端操...

Loblood
2011/09/19
1K
1
开发可编辑的JTree,求指导。。。。

因为项目的要求,需要用java开发一个能够像JTree那样下拉式的树形结构,但是可以批量的删除,树形结构的节点。看到java.swing.Jtree有这样的结构,但是不符合要求,有没有大神给指导一下,应...

竹林草
2013/10/03
150
1
JTree 平行化显示

很早之前就遇到这个问题了一直没能实质上的解决。请各位大神帮个忙。 我想用JTree达到想QQ好友列表一样的效果也就是 Root 我的好友 1…… 2…… 朋友 1…… 2…… 黑名单 1…… 2…… 但JTr...

dh_
2013/07/14
324
2
在开发过程中调试报表插件详细教程

背景说明 目前插件开发调试非常麻烦,需要修改代码,编译出class,重新打插件包。然后删除以前的,安装最新的。过程繁杂,而且不能调试,十分不方便。那么我就来教会大家如何可以调试插件。 ...

九月你好123
2015/07/29
66
0
想请教下java中JTree的用法

想问下java中的JTree如何实现单击不用叶节点时得到不同文本域的内容???

孤火
2015/04/19
186
1

没有更多内容

加载失败,请刷新页面

加载更多

vue vue-router beforeRouteEnter

本文转载于:专业的前端网站➬vue vue-router beforeRouteEnter beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 // 不!能!获取组件实例 `thi...

前端老手
46分钟前
4
0
Spring Boot 2 实战:结合 Docker 容器化

1. 前言 Docker 是啥?好处是啥? 什么现在如果作为一名开发你还不知道甚至没有用过我都感觉你落伍了。Docker 是一种虚拟化的容器技术,目的为了打造持续集成、版本控制、可移植性、隔离性和...

码农小胖哥
50分钟前
4
0
Linux 常用查询句柄的命令(Too many open files)

摘要 查询命令 进程占用的句柄总数 lsof -n | wc -l 查看哪一个进程占用的句柄最多 lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more 第一列 是 占用句柄数; 第二列 是 进程号 PID;...

liangxiao
50分钟前
5
0
JavaScript权威指南笔记5

第五章、语句 0、概述 JS程序是一系列可执行语句的集合。 通过控制语句来改变语句的默认执行顺序。 控制语句:条件、循环和跳转(如return、break和throw) 2、复合语句 当多条语句被当做一条语...

_Somuns
56分钟前
5
0
vmware安装ubuntu18.04总是 panic -not syncing:corrupted stack end detected inside schedule

Vmware 安装ubuntu 总是卡着不动, 提示panic -not synciong 网上提示很多办法,都试了效果不佳, 找到了完美解决办法 你的兼容模式重新选一下为6.0,兼容性对硬件有要求的 即可实现 成功安装...

dragon_tech
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部