zoukankan      html  css  js  c++  java
  • 利用反射与dom4j读取javabean生成对应XML

    项目中需要自定义生成一个xml,要把Javabean中的属性拼接一个xml,例如要生成以下xml

    <?xml version="1.0" encoding="gb2312"?>
    
    <students>
     <student>
      <name>张三</name>
      <age>18</age>
      <sex></sex>
     </student>
     <student>
      <name>李四</name>
      <age>19</age>
      <sex></sex>
     </student>
     <student>
      <name>小红</name>
      <age>17</age>
      <sex></sex>
     </student>
    </students>

    我上篇文章有分享过dom4j xml 工具类

    生成这个xml,我们其实可以分析下,可以先新建一个student.java 里面有  name,age,sex属性,students  里面有多个student,那我们再新建一个students.java  里面搞个集合,然后我们通过之前我分享的工具类来操作。贴代码

    1.student.java

    /*
     *
     */
    package com.test;
    
    /**
     * 描述     学生类
     * 
     * @author 小当家
     * @created 2017年12月11日 
     */
    public class Student {
        private String name;
        private String age;
        private String sex;
    
        public Student(String name, String age, String sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getAge() {
            return age;
        }
    
        public void setAge(String age) {
            this.age = age;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
    }

    2.students.java

    /*
     *
     */
    package com.test;
    
    import java.util.List;
    
    /**
     * 描述
     * @author 小当家
     * @created 2017年12月11日 
     */
    public class Students {
    
        private List<Student> student;
    
        public List<Student> getStudents() {
            return student;
        }
    
        public void setStudents(List<Student> students) {
            this.student = students;
        }
        
        
    }

    3.测试

    package com.test;
    
    import java.io.ByteArrayOutputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.dom4j.Document;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.XMLWriter;
    
    public class Testxml {
    
        public static void main(String[] args) throws IllegalArgumentException, IllegalAccessException, InstantiationException, ClassNotFoundException {
            Document doc = DocumentHelper.createDocument();
            //创建根节点
            Element root = DocumentHelper.createElement("students");//根节点
            doc.setRootElement(root);
            List<Student> list = new ArrayList<Student>();
            Student stu = new Student("张三", "18", "男");
            Student stu2 = new Student("李四", "19", "男");
            Student stu3 = new Student("小红", "17", "女");
            list.add(stu);
            list.add(stu2);
            list.add(stu3);
            Students po = new Students();
            po.setStudents(list);
            XmlUtil.copyAttrToEle(po, root);//复制对应的对象属性当到XML元素的值中   其中Students类中       private List<Student> student;    这里的student 表示字节点
            System.out.println(document2String(doc));
        }
        
        
        /**
         * 
         * 描述  document2String
         * @author 小当家
         * @created 2017年12月11日 
         * @param doc
         * @return
         */
         private static String document2String(Document doc) {
             String str = "";
             try {
                 ByteArrayOutputStream out = new ByteArrayOutputStream();
                 OutputFormat format = new OutputFormat(" ", true , "gb2312");
                 XMLWriter writer = new XMLWriter(out,format);
                 writer.write(doc);
                 str = out.toString("gb2312");
             } catch (Exception e) {
                 e.printStackTrace();
             }
             return str;
         }
    }

    如果大家有更好的方法,请指教,或者代码中有什么问题,也可以指教指教

  • 相关阅读:
    天梯赛5-12 愿天下有情人都是失散多年的兄妹 【dfs】
    poj2718 Smallest Difference【贪心】
    HDU problem 5635 LCP Array【思维】
    codeforces 782C Andryusha and Colored Balloons【构造】
    HDU 4278 Faulty Odometer【进制转换】
    codeforces B. The Meeting Place Cannot Be Changed【二分】
    POJ 3264 Balanced Lineup 【线段树】
    HDU 1850
    CodeForces-714C
    HDU Problem 1247 Hat's Words 【字典树】
  • 原文地址:https://www.cnblogs.com/Animation-programmer/p/8023643.html
Copyright © 2011-2022 走看看