• 利用反射与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;
         }
    }

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

  • 相关阅读:
    <<C++ Primer>> 第三章 字符串, 向量和数组 术语表
    <<C++ Primer>> 第二章 变量和基本类型 术语表
    <<C++ Primer>> 第一章 开始 术语表
    PAT A1077 Kuchiguse (20)
    PAT A1035 Password (20)
    PAT A1005 Spell It Right (20)
    <<C++ Primer>> 术语表 (总) (待补充)
    PAT A1001 A+B Format (20 分)
    PAT B1048 数字加密 (20)
    Protocol
  • 原文地址:https://www.cnblogs.com/Animation-programmer/p/8023643.html
Copyright © 2020-2023  润新知