`

使用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树

    而"sqlsever2005表jdom树.rar"可能包含了SQL Server 2005相关的数据库表信息,以及生成的XML树示例。如果要详细了解这些文件的内容,需要解压并查看源码。 总之,JDOM提供了一个强大且灵活的工具,使开发人员能够在...

    Spring+iBatis+JDom递归生成XML树

    在IT行业中,构建一个能够递归生成XML树的系统是一项常见的任务,特别是在处理复杂的数据结构时。本项目结合了Spring、iBatis和JDom这三个强大的技术,它们各自扮演着不同的角色来实现这一目标。 首先,Spring是一...

    DOM、SAX、DOM4J、JDOM、StAX生成XML并返回XML字符串形式

    生成XML字符串时,JDOM提供了一套直观的API来构造和序列化XML文档。 5. StAX (Streaming API for XML) StAX是Java提供的一个流式解析API,它介于DOM和SAX之间。像SAX一样,StAX也是事件驱动的,但它允许程序员以拉...

    jdom处理xml例子

    1. **SAXBuilder**:通过监听XML解析过程中的事件来构建JDOM树。 2. **DOMBuilder**:一次性加载整个XML文档到内存,生成Document对象。 **创建XML文档** 使用JDOM创建XML文档涉及以下几个步骤: 1. 创建`...

    Jdom解析xml案例

    JDOM是一个专为Java设计的XML处理库,它提供了一种高效且方便的方式来读取、修改和生成XML文档。 ### JDOM解析XML的基本概念 1. **DOM(Document Object Model)**:DOM是一种树形结构,将XML文档解析为一系列的...

    jdom-1.1.zip jdom-1.1.jar jdom.jar jdom库 jdom操作xml

    在JDOM中,XML文档被表示为一个树形结构,主要由三个基本元素组成:`Element`代表XML元素,`Attribute`表示元素的属性,而`Document`则封装了整个XML文档。通过这些类,你可以创建新的XML文档,或者读取并修改已有的...

    jdom.jar xml解析

    JDOM的目标是为Java开发者提供一个高效且易于使用的接口来处理XML文档。相比于DOM(Document Object Model),JDOM在Java环境中更为轻量级,因为它无需依赖Java平台的额外组件,如SAX或DOM解析器。 **XML解析方式**...

    Oracle开发人员JDOM和XML分析生成文档

    Oracle开发人员在处理XML文档时,常常会遇到各种挑战,如解析、操作和生成XML数据。JDOM(Java Document Object Model)是一个专为Java优化的开源XML处理库,旨在简化这些任务。它提供了与W3C DOM类似的功能,但更...

    jdom-1.0,jdom解析xml

    总的来说,JDOM-1.0是Java程序员处理XML的强大工具,通过其简洁的API,使得XML的解析、操作和生成变得简单易行。无论是在构建复杂的应用程序还是进行数据交换,JDOM都能提供可靠的解决方案。在实际开发中,根据项目...

    JDom 读写XML

    JDom主要由三部分构成:SAXBuilder用于从XML源生成Element对象树,Element作为文档的基本结构单元,以及DOMBuilder用于将JDom对象转换回DOM对象。 3. **XML读取** 使用JDom读取XML文件通常涉及以下步骤: - 创建...

    生成、解析xml的四种方式(dom,dom4j,sax,jdom)

    本文将详细介绍生成和解析XML的四种主要方法:DOM、DOM4J、SAX和JDOM。 1. DOM(Document Object Model) DOM是W3C组织推荐的一种解析XML的标准方式。它将XML文档视为一个树形结构,每个节点代表XML文档的一部分。...

    jdom.zip_jdom-1.0.jar包_xml java JDOM

    在XML处理中,JDOM提供了一种高效且灵活的方式来解析XML文档,构建XML树,以及对XML文档进行查询和修改。通过导入jdom-1.0.jar,开发者可以获得如解析XML文件、创建新的XML结构、更新已有元素或属性、执行XPath查询...

    Java DOM 生成XML

    Java DOM(Document Object Model)是一种基于树形结构的XML文档处理模型,它允许程序员通过对象接口来访问和操作XML文档的各个部分。DOM为XML文档提供了一种内存中的表示方式,使得开发人员可以方便地创建、修改和...

    xml 解析(Jdom代码)

    JDOM通过构建DOM(Document Object Model)树来解析XML,DOM是一种与平台和语言无关的接口,可以将XML文档表示为一系列的节点。 **1. JDOM的基本概念** - **Element**: 表示XML文档中的元素,如`&lt;book&gt;`。 - **...

    java_动态生成XML文件

    在Java编程语言中,动态生成XML文件是一种常见的需求,特别是在处理数据交换、配置文件或与Web服务交互时。本文将详细解析如何使用JDOM库在Java中动态创建XML文档,通过分析给定代码示例来深入理解其核心知识点。 #...

    dhtmlxtree动态从表中生成树,通过servlet,jdom,dhtmlxtree生成树

    总的来说,`dhtmlxtree`、`servlet`和`jdom`的结合使用,为我们提供了一种高效、灵活的方式,动态地从数据库生成交互式的树形视图,尤其适用于需要展示层级关系的数据场景。无论是在传统的Java Web应用还是现代的MVC...

    jdom解析xml用到的jar包

    XML(eXtensible Markup Language...总的来说,JDOM是一个强大的Java XML处理库,它提供了直观且高效的API,使得XML的解析、操作和生成变得简单易行。对于任何需要处理XML的Java项目,JDOM都是一个值得考虑的优秀选择。

    Jdom解析嵌套XML<一>

    使用JDOM解析这样的文件,可以先创建一个`SAXBuilder`实例,然后调用`build()`方法读取XML文件,生成一个`Document`对象。这个`Document`对象就是整个XML文档的根节点,下面挂载着所有其他的元素节点。 接下来,...

    jdom4j解析xml

    标题与描述概述的知识点主要集中在使用jdom4j库解析并生成XML文件的过程,特别是针对组织结构树的生成。下面将详细阐述此过程中的关键步骤和技术细节。 ### jdom4j解析XML实例详解 #### 生成XML文档 在示例代码中...

    用jdom简化xml 编程 关于xml

    它提供了一个完全基于Java的API,使得XML数据能够直接映射为Java对象,从而方便地进行读取、修改和生成XML文档。 JDOM的核心在于它提供了更加符合Java编程习惯的类和方法,比如直接操作XML元素、属性和文本的类,这...

Global site tag (gtag.js) - Google Analytics