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;
         }
    }

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

  • 相关阅读:
    【幻化万千戏红尘】qianfengDay03-java基础学习:for循环,switch,if
    Hexo | 博客文章链接优化之abbrlink
    Hexo 集成 Gitalk 评论系统
    Linux对一个目录及其子目录所有文件添加权限
    PhpStorm配置使用phpunit单元测试
    php根据当前定位经纬度排序
    mysql根据当前定位经纬度排序
    linux压缩和解压缩命令
    PHP常见数学函数及BC高精度数学函数用法示例
    vagrant package 打包自己的box镜像
  • 原文地址:https://www.cnblogs.com/Animation-programmer/p/8023643.html
Copyright © 2011-2022 走看看