数据:
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>
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>
解决方案 »
- 大家帮我看下我的简历,我应该如何应聘!就一页Word文档!
- java 线程安全问题
- 求助........要疯了....
- java权限管理报错了!!! help--------(库存分为零了 - -)
- 数据库操作commit失败后,需要再rollback吗?
- 我手动 配置2个表的一对多关系产生异常Association references unmapped class: gcc.Hibernate.TestOrder,可以进来帮我看看吗
- 高分求bean自增id问题
- 关于Hibernate中的主键自动标识
- 请问JBuilder8里如何将一个完整的项目加进去
- 各位大神,请教一个问题,求指点,谢谢!
- struts2+hibernate采用annotation进行ManyToOne关联的问题
- 一个小小问题。!!! 求救。
想想有个pId是要方便点 .............多谢指点 .
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()));
}