利用反射与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;
}
}
如果大家有更好的方法,请指教,或者代码中有什么问题,也可以指教指教
利用反射与dom4j读取javabean生成对应XML的更多相关文章
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
转自:http://blog.csdn.net/zhao19861029/article/details/8473245 首先实现生成对应的JAVAbean的XML文件方法 /** * DMO4J写入 ...
- 利用反射将IDataReader读取到实体类中效率低下的解决办法
最开始使用反射一个类型的各个属性,对气进行赋值的代码如下: public static List<T> ToList<T>(IDataReader reader) { //实例 ...
- 利用反射获取数据列+emit生成属性+单例模式
1:IDictionary<string,string > 可以存储数据,将拼接的sql可以存储到这里下次可以使用 定义自定义属性表和列 typeof(T).GetCustomAttrib ...
- 利用java反射机制实现读取excel表格中的数据
如果直接把excel表格中的数据导入数据库,首先应该将excel中的数据读取出来. 为了实现代码重用,所以使用了Object,而最终的结果是要获取一个list如List<User>.Lis ...
- 利用反射生成JDK动态代理
利用反射生成JDK动态代理 在Java的java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口可以生成JDK动态代理类和动态代理 ...
- java反射并不是什么高深技术,面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象
java反射并不是什么高深技术,面向对象语言都有这个功能. 面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象,去获取类相关的信息 2.利用java反射可以调用类 ...
- 【XML】利用Dom4j读取XML文档以及写入XML文档
Dom4j简介 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能 ...
- Java——利用反射机制将表单数据自动填充到JavaBean中
以一个案例介绍反射机制的一种常见的使用场景,以及具体实现. 1.本文案例 在编写Java Web应用程序时,使用表单提交数据是一个必不可少的环节,后台对于前台使用表单提交的数据需要能够从请求中解析,并 ...
- 利用java反射动态调用方法,生成grid数据
项目中需要java后台查询并组装前台grid的数据,数据行数不定,数据行定义不定,开始用了最原始的方法,写了几百行,就是前台需要什么字段后台拼接什么字段,java代码冗余量非常大,并且不够灵活,一旦前 ...
随机推荐
- android webview 全屏100%显示图片
这里引用 第三方类库 implementation 'org.jsoup:jsoup:1.10.2' 定义工具类 HtmlUtils import org.jsoup.Jsoup; import or ...
- 【VS开发】【C/C++开发】vs2015编译boost 64位
vs2015编译boost 64位 ---恢复内容开始--- step 1: 打开Developer Command Prompt for VS2015命令行窗口 step 2: 执行bootstra ...
- cad.net 图元延迟显示,动画效果,编辑器延迟发送提示.
public class Command_test { [CommandMethod("tt", CommandFlags.Modal | CommandFlags.UsePick ...
- Maven 教程(12)— Maven生命周期和插件
原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79549695 除了坐标.依赖以及仓库之外,Maven的另外两个核心概念是生命周期 ...
- hadoop学习之HDFS原理
HDFS原理 HDFS包括三个组件: NameNode.DataNode.SecondaryNameNode NameNode的作用是存储元数据(文件名.创建时间.大小.权限.与block块映射关系等 ...
- Oracle账号,用于下载jdk
账号:liwei@xiaostudy.com 密码:OracleTest1234
- QT攻略——我在QT中遇到的那些坑
(1)QUdpSocket接收数据 进入槽后,要用这种方式读取,否则可能会导致不发readyRead()信号 .while(udpSocket->bytesAvailable()){ udpSo ...
- [SOJ #696]染色(2019-11-10考试)/[Atcoder MUJIN Programming Challenge C]Orange Graph
题目大意 有一个\(n\)个点\(m\)条边的简单无向连通图,初始为白色,可以执行操作让一些边变黑,要求使得操作后的图不存在黑色的奇环,且不能使得其他的任何变黑而还符合要求.问最后有多少可能结果.\( ...
- 超简单的VUE在线调试网站(不需搭建环境)
jsbin.com提供简单.直观.易用的vue调试功能,最大的好处不需要自己搭建环境就可以学习VUE 1.打开http://jsbin.com/joxinumota/edit?html,js,cons ...
- 第一阶段:Java基础 1.JAVA开发介绍---5. Java的注释,标识符、标识符的命名规范
1.java注释 java中有三种注释方式,单行注释,多行注释,文档注释. (1).单行注释:快捷键Ctrl+/再次按撤销注释, (2).多行注释:Ctrl+shift+/ 撤销Ctrl+shift+ ...