开发者社区> 问答> 正文

利用dom4j生成dhmlxtree的xml文件格式异常

由于项目需要,需要开发一颗树来展示各元素之间的层级关系,选用了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>

恳请各路大神指点,小弟现在这里谢过了

展开
收起
长安归故里. 2020-01-08 16:20:16 967 0
1 条回答
写回答
取消 提交回答
  • 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、循环一级节点 递归找其他级别节点

    2020-01-08 16:21:13
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
JS 语言在引擎级别的执行过程 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载