java递归生成xml树形目录

package testXMLTree;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

/**
 * java递归生成xml树形目录
 *
 *
 */
public class Testxml {
    static List<TestNode> nodes = generateTreeNode();

    public static void main(String[] args) throws IOException {
        writeXml();

    }

    private static void writeXml() throws UnsupportedEncodingException,
            FileNotFoundException, IOException {
        Document document = DocumentHelper.createDocument();
        Element root = DocumentHelper.createElement("tree");
        document.setRootElement(root);
        for (int i = 0; i < nodes.size(); i++) {

            TestNode node = nodes.get(i);
            if (node.getParentId() == 0 || node.getNodeType() == 1) {
                Element items = root.addElement("items");
                items.addAttribute("name", node.getNodeName());
                items.addAttribute("id", String.valueOf(node.getId()));
                AddChildNode(items, node.getId());

            }

        }

        HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
                .getRequestAttributes()).getRequest();
        ServletWebRequest servletWebRequest = new ServletWebRequest(request);
        HttpServletResponse response = servletWebRequest.getResponse();

        writeToFront(request, response, document.asXML());
        writeToLocal(document);
    }

    private static void writeToFront(HttpServletRequest request,
            HttpServletResponse response, String xml) throws Exception {

        response.setContentType("text/xml; charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.print(xml);
        out.flush();
        out.close();

    }

public void writeToxml(HttpServletRequest request,HttpServletResponse response,Document document) throws UnsupportedEncodingException, IOException{
        OutputFormat format = OutputFormat.createPrettyPrint();  
        format.setEncoding("utf-8");  
        response.setCharacterEncoding("UTF-8");  
        response.setContentType("text/xml;charset=utf-8");  
        XMLWriter xw = new XMLWriter(response.getOutputStream(), format);  
        xw.write(document);  
        xw.flush();  
        xw.close();  
    }
 

 

    private static void writeToLocal(Document document)
            throws UnsupportedEncodingException, FileNotFoundException,
            IOException {
        OutputFormat format = new OutputFormat(" ", true);
        format.setEncoding("utf-8");
        XMLWriter writer = new XMLWriter(new FileOutputStream("F:/k.xml"),
                format);
        writer.write(document);
        writer.flush();
        writer.close();
    }

    private static void AddChildNode(Element items, int id) {
        for (int i = 0; i < nodes.size(); i++) {
            TestNode node = nodes.get(i);
            if (node.getParentId() == id) {
                Element item = items.addElement("item");
                item.addAttribute("name", node.getNodeName());
                item.addAttribute("id", String.valueOf(node.getId()));
                AddChildNode(item, node.getId());
            }

        }
    }

    public static List<TestNode> generateTreeNode() {
        List<TestNode> nodes = new ArrayList<TestNode>();
        for (int i = 0; i < 10; i++) {

            TestNode node = new TestNode();
            node.setId(i + 1);
            node.setParentId(i);
            node.setNodeName("node" + i);
            if (i % 2 == 0) {

                node.setNodeType(1);

            } else {
                node.setNodeType(2);

            }
            nodes.add(node);

        }
        return nodes;

    }
}

 

转载于:https://my.oschina.net/iioschina/blog/729245

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值