zoukankan      html  css  js  c++  java
  • 创建小毛驴


    DOM创建XML

    * 1.首先创建Document来描述树
    * 2.根据结构添加元素来组建树的结构
    * 3.将树写入文件


    1. 构建Document对象

    使用DOM4J我们还可以通过自行构建Document对象,并组建树状结构来描述一个XML文档,并使用DOM4J将其写入一个文件。
    那么在写XML文件时,做的第一件事自然就是构建Document对象。那么我们来看看如何构建一个Document对象。
    构建Docuemnt对象,

    我们可以使用DOM4J提供的一个类:DocumentHelper,其提供了一个静态方法:
    static Document createDocument()
    该方法会创建一个Docuemnt对象。

    2. Document的addElement方法

    当我们创建好Document后,我们就可以开始添加XML的根元素,通过前面的知识介绍我们知道,Element是用来描述XML中的一个元素的,所以我们要向Document中添加一个Element来表示根元素。
    Document提供了这样的一个方法,可以方便的添加根元素:
    Element addElement(String name)
    该方法的作用是向Docuemnt中添加指定名字的根元素,这里需要注意的是,该方法只应当调用一次,否则会抛出文档已经存在根元素的异常。当根元素添加完毕后,该方法会将根元素所对应的Element对象返回,以便我们根据根元素来组织整个树。

    3. Element的addElement方法

    有了根元素后,我们如何向根元素中添加子元素呢?
    Element类同样同了一个方法,用于向该元素中添加子元素:
    Element addElement(String name)
    该方法会向当前元素中添加给定名字的子元素,并将其对应的Element对象返回。

    4. Element的addAttribute方法

    除了向元素中添加子元素外,我们也经常会给当前元素添加属性。Element类提供了用于添加属性的方法:
    Element addAttribute(String name,String value)
    该方法会向当前元素中添加给定名字以及对应的值的属性。返回值依然为当前元素,这样做的目的在于我们连续添加元素时的代码复杂度可以减低,这个类似StringBuilder的append等方法的道理。

    5. Element的addText方法

    Element还提供了一个方法,可以向元素的文本节点添加文本信息。其方法定义为:
    Element addText(String text)

    6. XMLWriter输出XML文档

    当我们构建好Docuement后,我们可以通过XMLWriter来输出。

        /**
         * 将给定集合中所有员工信息以xml形式写入给定文件中
         * 
         * @param list
         * @param fileName
         *    使用Dom写xml的原则 组织好整棵树
         */
        private static void writeXmlToFile(List<Emp> list, String fileName) {
            try {
                /*
                 *  1.首先创建Document来描述树
                 *  2.根据结构添加元素来组建树的结构 
                 *  3.将树写入文件
                 */

           //1 Document doc = DocumentHelper.createDocument(); // 2 /* * 用于添加根元素 返回值Element表示添加的这个根元素 * * Document的addElement方法只能调用一次 因为根只能有一个 */ Element root = doc.addElement("list"); // 循环list集合 for (Emp emp : list) { // 向根元素中添加子元素emp Element empEle = root.addElement("emp"); /* * Element的方法 addAttribute(String name,String value) * 用于向当前元素中追加属性 参数1:属性名 参数2:属性值 */ empEle.addAttribute("id", emp.getId() + ""); // 向emp中追加子元素name Element nameEle = empEle.addElement("name"); /* * Element 的方法addText(String str) 向当前元素中追加文本信息(前后标记中间) * <name>文本</name> */ nameEle.addText(emp.getName()); /* * 追加年龄元素 */ empEle.addElement("age").addText(emp.getAge() + ""); /* * 追加性别 */ empEle.addElement("gender").addText(emp.getGender() + ""); /* * 追加工资 */ empEle.addElement("salary").addText(emp.getSalary() + ""); // 3 FileOutputStream fos = new FileOutputStream(fileName); XMLWriter xmlWriter = new XMLWriter(fos); xmlWriter.write(doc); xmlWriter.close(); } } catch (Exception e) { e.printStackTrace(); } }
  • 相关阅读:
    【斜率DP】BZOJ 1010:玩具装箱
    【string】KMP, 扩展KMP,trie,SA,ACAM,SAM,最小表示法
    网络流24题 (一)
    关于ax+by=c的解x,y的min(|x|+|y|)值问题
    【概率】COGS 1487:麻球繁衍
    【概率】poj 2096:Collecting Bugs
    [洛谷P5376] 过河卒二
    [TJOI2019] 洛谷P5339 唱、跳、rap和篮球
    [洛谷P3851] TJOI2007 脱险
    [洛谷P3843] TJOI2007 迷路
  • 原文地址:https://www.cnblogs.com/manue1/p/4514791.html
Copyright © 2011-2022 走看看