项目中需要自定义生成一个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;
}
}

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

利用反射与dom4j读取javabean生成对应XML的更多相关文章

  1. 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合

    转自:http://blog.csdn.net/zhao19861029/article/details/8473245 首先实现生成对应的JAVAbean的XML文件方法 /** * DMO4J写入 ...

  2. 利用反射将IDataReader读取到实体类中效率低下的解决办法

    最开始使用反射一个类型的各个属性,对气进行赋值的代码如下: public static List<T> ToList<T>(IDataReader reader) { //实例 ...

  3. 利用反射获取数据列+emit生成属性+单例模式

    1:IDictionary<string,string > 可以存储数据,将拼接的sql可以存储到这里下次可以使用 定义自定义属性表和列 typeof(T).GetCustomAttrib ...

  4. 利用java反射机制实现读取excel表格中的数据

    如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.Lis ...

  5. 利用反射生成JDK动态代理

    利用反射生成JDK动态代理 在Java的java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口可以生成JDK动态代理类和动态代理 ...

  6. java反射并不是什么高深技术,面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象

    java反射并不是什么高深技术,面向对象语言都有这个功能. 面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象,去获取类相关的信息 2.利用java反射可以调用类 ...

  7. 【XML】利用Dom4j读取XML文档以及写入XML文档

    Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...

  8. Java——利用反射机制将表单数据自动填充到JavaBean中

    以一个案例介绍反射机制的一种常见的使用场景,以及具体实现. 1.本文案例 在编写Java Web应用程序时,使用表单提交数据是一个必不可少的环节,后台对于前台使用表单提交的数据需要能够从请求中解析,并 ...

  9. 利用java反射动态调用方法,生成grid数据

    项目中需要java后台查询并组装前台grid的数据,数据行数不定,数据行定义不定,开始用了最原始的方法,写了几百行,就是前台需要什么字段后台拼接什么字段,java代码冗余量非常大,并且不够灵活,一旦前 ...

随机推荐

  1. Python【每日一问】30

    问: [基础题]:一个足球队在寻找年龄在10岁到12岁的小女孩(包括10岁和12岁)加入.编写一个程序,询问用户的性别(m表示男性,f表示女性)和年龄,然后显示一条消息指出这个人是否可以加入球队,询问 ...

  2. BZOJ3926 ZJOI2015诸神眷顾的幻想乡(广义后缀自动机)

    对多串建立SAM的一种方法是建trie再对trie建SAM.构造方式分为在线(也即不建trie而是依次插入每个串,或在trie上dfs)和离线(也即建好trie再bfs).其中离线构造与单串的构造方式 ...

  3. SQL分类之DDL:操作数据库表

    DDL:操作数据库表 1.操作数据库:CRUD 1.C(Create):创建 创建数据库: create database 数据库名称 创建数据库,判断不存在,再创建: create database ...

  4. ASP.NET Core应用程序的参数配置及使用(转载)

    本文结构 提前准备 参数配置方式 appsettings.json 环境变量 命令行参数 在控制器中使用配置参数 注入IConfiguration对象 注入IOptions对象 总结 应用程序的开发不 ...

  5. C#中datatable操作

    //1.新建datatable,为其添加自定义列DataTable dt = new DataTable();dt.Columns.AddRange(new DataColumn[] { new Da ...

  6. Git 管理版本/回退

    参考链接:https://www.liaoxuefeng.com/wiki/896043488029600/896954074659008 Git status命令可以让我们时刻掌握仓库当前的状态,比 ...

  7. final,finally,finalize之间的区别。

    fianl:可以修饰类.变量.方法.修饰类不能被继承,修饰变量只能赋值一次,修饰方法不能被重写. finally是try语句体中的一个语句体,不能单独使用,用来释放资源. finalize()是在ja ...

  8. fatal: unable to connect to github.com npm install fail问题

    解决方法 git config --global url."https://".insteadOf git://

  9. android解析xml (pull)

    1. xml <persons> <person id="18"> <name>furong</name> <age>2 ...

  10. redis-启用命令

    一.redis后端启动: 1.将redis源码包中的redis.conf配置文件复制到redis/bin/下 # cd /root/redis-3.0.0 # cp redis.conf /usr/l ...