由于项目需要,需要开发一颗树来展示各元素之间的层级关系,选用了DhtmlTree树控件来实现前台树
代码如下:
public class TransListToXML {
/**
* 生成document
* @return document
* */
public static Document generateXML(){
List<Organization> orgList = TransListToXML.getOrgList();
Document doc = DocumentHelper.createDocument();
Element root = doc.addElement("root");
for(Organization org:orgList){
Element orgPre = root.addElement(org.getName());
for(Organization orgs:orgList){
if((org.getId()).equals(orgs.getParentid())){
orgPre.addElement(orgs.getName());
}
}
}
// Element category = root.addElement("category");
// Element id = category.addElement("id");
// id.addAttribute("name","id");
// id.addText("malongchao");
return doc;
}
/**
* 写入XMl文件
* @param document 所要写入的文件内容
* @param outFile 文件存放的地址
* */
public static void writeDocument(Document docment,String outFile){
try {
FileOutputStream fileWriter = new FileOutputStream(outFile);//读取文件
OutputFormat xmlFormat = OutputFormat.createPrettyPrint();//设置文件格式
xmlFormat.setEncoding("utf-8");
XMLWriter xmlWriter = new XMLWriter(fileWriter,xmlFormat);//创建写文件方法
xmlWriter.write(docment);//写入文件
xmlWriter.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("文件没有找到");
e.printStackTrace();
}
}
/**
* 获取组织机构列表信息
* @return orgList 组织机构信息列表
* */
public static List<Organization> getOrgList(){
String configLocation = "applicationContext.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(configLocation);
OrganizationService orgSer = (OrganizationService)context.getBean("organizationService");
List<Organization> orgList = orgSer.getAllOrgization();
return orgList;
}
public static void main(String[] args){
Document doc = TransListToXML.generateXML();
String outFile = "d://result.xml";
writeDocument(doc, outFile);
}
}
需要的输出结果为
Xml代码 收藏代码
<root>
<北京>
<北京/>
<海淀区>
<奥运村/>
<丰台区/>
<七里庄/>
<北大地/>
<卢沟桥/>
</海淀区>
<中关村/>
<上地/>
</北京>
</root>
但是目前实际的输出结果为:
Xml代码 收藏代码
<?xml version="1.0" encoding="utf-8"?>
<root>
<北京>
<北京/>
<海淀区/>
<中关村/>
<上地/>
</北京>
<海淀区>
<奥运村/>
<丰台区/>
<七里庄/>
<北大地/>
<卢沟桥/>
</海淀区>
<中关村/>
<上地/>
<奥运村/>
<丰台区/>
<七里庄/>
<北大地/>
<卢沟桥/>
</root>
恳请各路大神指点,小弟现在这里谢过了
for(Organization org:orgList){
Element orgPre = root.addElement(org.getName());
for(Organization orgs:orgList){
if((org.getId()).equals(orgs.getParentid())){
orgPre.addElement(orgs.getName());
}
}
}
-----------------------> 如果只有两级树的话 for(Organization org:orgList){
//找一级节点写入root 否则continue; Element orgPre = root.addElement(org.getName());
//找二级节点 for(Organization orgs:orgList){
if((org.getId()).equals(orgs.getParentid())){
orgPre.addElement(orgs.getName());
}
}
}
如果多级的话 就需哟递归完成 //1、写一级节点 //2、循环一级节点 递归找其他级别节点
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。