首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

求稍有难度递归(TREE)解决办法

2012-08-29 
求稍有难度递归(TREE)数据:idnamelel1公共信息分类编码148行政区域代码2c200华南3c1广东4c201华东329各地

求稍有难度递归(TREE)
数据:
id name lel 
1 公共信息分类编码 1
48 行政区域代码 2
c200 华南 3
c1 广东 4
c201 华东 3
29 各地区名称编码 2
39 行业分类以代码 2



递归的XML格式(层次无限)
<?xml version="1.0" encoding="UTF-8"?>
<node id=1 lel=1 name=公共信息分类编码>
<node id = 48 lel =2 name = 行政区域代码>
<node id = c200 lel =3 name = 华南>
<node id = c1 lel = 4 name=广东 />
</node>
<node id = c201 lel = 3 name=华东 />
</node>
<node id = 29 lel = 2 name=各地区名称编码 />
<node id = 39 lel = 2 name=行业分类以代码 />
</node>



[解决办法]
你的node应该还要有一个pid,就是3级的应该加在那个第2级的上面啊 ,要不然那么多2级节点,该怎么加啊 ?
[解决办法]
楼主这是要做什么?Element.elements()判断是否有子结点,有就接着递归,没有就输出。
[解决办法]
拿以前的代码稍微改了改

Java code
//数据对象public class SmMenu {    private String id;    private String pid;//父节点ID    private String lel;    private String name;    //存放子节点集合    private List<SmMenu> menuList;    // setter and getter    ...}        public List<SmMenu> getMenuTree() {        List<SmMenu> menuList = new ArrayList<SmMenu>();        //从数据库查询到所有数据        List<SmMenu> allList=this.findAll();        Map<String,SmMenu> map=new HashMap<String,SmMenu>();        for(SmMenu bo : allList){            map.put(bo.getId(), bo);            if(bo.getPid()==null){                //存放顶级节点到一个集合                menuList.add(bo);            }        }        //存放子节点集合        for(SmMenu bo : allList){            if(bo.getPid()!=null){                SmMenu parent=map.get(bo.getPid());                parent.getMenuList().add(bo);            }        }        return menuList;    }    //递归得到最终的xml结构数据    public String getXML(List<SmMenu> list){        StringBuffer xmlNode  = new StringBuffer();                for(SmMenu bo : allList){            xmlNode.append("<node ");            xmlNode.append("id='"+bo.getId()+"' ");            xmlNode.append("pid='"+bo.getPid()+"' ");            xmlNode.append("lel='"+bo.getLel()+"' ");            xmlNode.append("name='"+bo.getName()+"' ");                        if(bo.getMenuList()!=null && bo.getMenuList().size()>0){                xmlNode.append(">\n");                xmlNode.append(this.getXML());                xmlNode.append("\n");                xmlNode.append("</node>");            }else{                xmlNode.append("/>");            }        }        return xmlNode.toString();    }        public void test(){        System.out.println(this.getXML(this.getMenuTree()));    }
[解决办法]
好像报表····
[解决办法]
你得有个Pid的;挂钩上级目录;找他的pid比较方便吧;

热点排行
Bad Request.