使用dom4j并利用java反射机制将对象集合写入XML
2016-06-20 14:52
441 查看
本代码中的方法可在未知某个类内的基本属性的时候,将对象集合写入xml中,利用了java反射机制
同时需要导入第三方jar包: dom4j.jar
方法为writeXml(ArrayList studentArray,Class elementClass)
参数1为需要写到磁盘的对象数组
参数2为该集合对象所在的类
运行后文件存在的位置为:当前项目的根目录
文件名为: 实体类名+”s.xml”
例如实体类为Student,则运行后会在当前项目的根目录生成 Students.xml文件
代码如下:
同时需要导入第三方jar包: dom4j.jar
方法为writeXml(ArrayList studentArray,Class elementClass)
参数1为需要写到磁盘的对象数组
参数2为该集合对象所在的类
运行后文件存在的位置为:当前项目的根目录
文件名为: 实体类名+”s.xml”
例如实体类为Student,则运行后会在当前项目的根目录生成 Students.xml文件
代码如下:
package com.chance.chapter05.reflection.xml; import java.io.FileOutputStream; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.XMLWriter; public class TestDom4jWriter { public static void main(String[] args) { ArrayList<Student> stuList = new ArrayList<>(); stuList.add(new Student("wucq","0000","1001", "吴承潜", 22, "男", "湖南")); stuList.add(new Student("gongzg","0000","1002", "宫志刚", 22, "男", "甘肃")); stuList.add(new Student("liuyx","0000","1003", "刘宇星", 22, "男", "湖南")); writeXml(stuList,Student.class); } /** * 写入xml * @param fileName 要保存的文件路径 * @param studentArray 要保存的集合数据 */ public static void writeXml(ArrayList studentArray,Class elementClass) { // 生成一个Dom树 Document document = DocumentHelper.createDocument(); // 增加根节点 Element root = document.addElement(elementClass.getSimpleName()+"s"); // 循环添加Student节点 for (Object obj : studentArray) { Element stuElement = root.addElement(elementClass.getSimpleName()); try { //获取Person对象的所有属性 Class per = elementClass.getSuperclass(); Field fieldsPerson[] = per.getDeclaredFields(); for (Field field : fieldsPerson) { field.setAccessible(true); System.out.println("属性名:"+field.getName()+",值:"+field.get(obj)); // 给Student节点中添加Student的子节点 stuElement.addElement(field.getName()).setText(field.get(obj).toString()); } //获取student对象的所有属性 Field fields[]=elementClass.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); System.out.println("属性名:"+field.getName()+",值:"+field.get(obj)); // 给Student节点中添加Student的子节点 stuElement.addElement(field.getName()).setText(field.get(obj).toString()); } } catch (Exception e) { e.printStackTrace(); } } // 将xml写入文件(输出流) try { XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(elementClass.getSimpleName()+"s.xml")); xmlWriter.write(document); xmlWriter.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
相关文章推荐
- eclipse svn检出项目为非JAVA项目
- Java 动态编译
- springmvc validator验证的使用
- 在JSP中使用JavaBean
- Java Bean、POJO、 Entity、 VO 、PO、DAO
- SpringMvc返回@ResponseBody中文乱码
- Xamarin Visual Studio不识别JDK路径
- Java中的线程执行器总结
- spring mvc 自定义方法拦截器
- JAVA学习笔记——运行我的第一个程序(day01)
- spring声明式事务管理
- Java 占位符
- Java 链接mysql数据库实现增删该查功能
- 解决Mac java.net Local host name unknown error的方法
- Xamarin Visual Studio不识别JDK路径
- svn使用相关问题:eclipse插件,加锁,解锁,偷锁,更新不了,记住密码
- Java设计模式之--外观模式(facade pattern)
- Java高新技术——多线程与并发库(上)
- java学习---第四篇static关键字以及主函数定义
- maxmimumsize 和struts.multipart.maxSize