`

使用Jdom来把一棵完整的树生成XML

阅读更多

 public String parseXML() {
  String parseContent = JspUtils.getParameter(getRequest(),
    "parseContent", "");
  Long deep = JspUtils.getLongParameter(getRequest(), "deep", new Long(-1));
  String selectInfos = JspUtils.getParameter(getRequest(), "selectInfos",
    "");
  List categorys = categoryManageService.findSubCategories(null, null,
    false, parseContent, true);

  Element root = new Element("root");
  root.setAttribute("type", selectInfos);

  Element curElement = root;

  if (!Utilities.isNullOrEmpty(categorys)) {
   for (int i = 0; i < categorys.size(); i++) {
    Category c = (Category) categorys.get(i);
    Element elements = new Element("node");
    elements.setAttribute("type", "category");
    elements.setAttribute("tId", c.getId() + "");
    elements.setAttribute("pId",
      c != null && c.getParent() != null ? c.getParent()
        .getId()
        + "" : "-1");
    elements.setAttribute("name", c != null
      && !StringUtils.isNullOrEmpty(c.getName()) ? c
      .getName() : "");
    if (selectInfos.equalsIgnoreCase("topic")) {
     Element tElement = null;
     List<Topic> topics = categoryManageService.findTopics(c);
     if (!Utilities.isNullOrEmpty(topics)) {
                for (Topic topic : topics) {
                 tElement = new Element("node");
                 tElement.setAttribute("tId", topic != null ? topic.getId()+"" : "01");
                 tElement.setAttribute("pId", c.getId() + "");
                 tElement.setAttribute("name", topic != null && !StringUtils.isNullOrEmpty(topic.getName()) ? topic.getName() : "");
              elements.addContent(tElement);
                }
     }
    }
    addElementIntoEML(elements, curElement, root);
    System.out.println(curElement);
   }
  }
  
  Document doc = new Document(root);
  String newFile = "E:/xml/"+selectInfos+".xml";
  try {
   File file = new File(newFile);
   if (!file.exists()) {
    file.createNewFile();
   }
   XMLOutputter XMLOut = new XMLOutputter();
   OutputStream os = new FileOutputStream(file);
   XMLOut.setEncoding("utf-8");
   XMLOut.setNewlines(true);
   XMLOut.setIndent(3);
   
   XMLOut.output(doc, os);
   os.close();
  } catch (Exception e) {
   e.printStackTrace();
  } 
  getRequest().setAttribute("newFile", newFile);
  return "parseXML";
 }

 

 private void addElementIntoEML(Element newElement, Element curElement, Element root) {
  Element temp = curElement;
  while (temp != null) {
   if (newElement.getAttributeValue("pId").equals(temp.getAttributeValue("tId"))
     || temp.getAttributeValue("type").equals(root.getAttributeValue("type"))) {
    temp.addContent(newElement);
    curElement = newElement;
    return;
   }
   temp = temp.getParent();
  }
 }

 

分享到:
评论

相关推荐

    JDOM实现从数据库读取字段生成XML树

    JDOM实现从数据库读取字段生成XML树

    Spring+iBatis+JDom递归生成XML树

    Spring+iBatis+JDom递归生成XML树 Spring+iBatis+JDom递归生成XML树

    Javaweb中使用Jdom解析xml的方法

    Jdom是一个开源项目,基于树形结构,利用纯java的技术对XML文档实现解析,生成,序列化以及多种操作.这篇文章主要介绍了Javaweb中使用Jdom解析xml的方法的相关资料,需要的朋友可以参考下

    xml入门教程/xml入门教程

    10)XML是分层的树形结构的自解释的一种可扩展的标记语言。 XML和HTML的关系 1) 事实上,HTML和XML不能够进行比较的。因为XML是一种元语言,而HTML是一种定义好的标记语言。XML是描述数据的语言,HTML是描述数据 ...

    XML解析教程

    JDOM(注意JDOM决不是DOM扩展,虽然名字差不多,但两者平行的关系 )是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。JDOM的目的是成为Java特定文档模型,它简化与XML...

    DWR.xml配置文件说明书(含源码)

    DWR 自动将DOM、DOM4J、JDOM和XOM转换成DOM树,前面这几种类型都仅仅返回Document,Element,Node.DWR会自动将这些转换成浏览器DOM对象.通常在启动JDOM Converter时会有一个提示信息,除非你想采用JDOMconverter否则可以...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    第1部分 xml篇. 第1章 xml与dtd 2 1.1 xml的产生 2 1.2 w3c介绍 2 1.3 关于xml的几个问题 3 1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    第1部分 xml篇. 第1章 xml与dtd 2 1.1 xml的产生 2 1.2 w3c介绍 2 1.3 关于xml的几个问题 3 1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    第1部分 xml篇. 第1章 xml与dtd 2 1.1 xml的产生 2 1.2 w3c介绍 2 1.3 关于xml的几个问题 3 1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    第1部分 xml篇. 第1章 xml与dtd 2 1.1 xml的产生 2 1.2 w3c介绍 2 1.3 关于xml的几个问题 3 1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有...

    java源码包---java 源码 大量 实例

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    JAVA上百实例源码以及开源项目

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...

    java源码包2

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    java源码包3

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    JAVA上百实例源码以及开源项目源代码

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

    java源码包4

    1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高...

Global site tag (gtag.js) - Google Analytics