java实体类转换xml_简单实体类和xml文件的相互转换方法

本文介绍了一个Java工具类,能够实现简单的实体类(如Emp, Student)与XML文件之间的转换。该工具类利用反射和DOM4J库,支持String, Integer, Double三种属性类型。虽然当前版本不支持复杂类型和一对多关系,但为扩展提供了可能。" 114771085,9964096,Unity Shader实现水体渲染技术,"['Unity3D', '游戏开发', '图形渲染', '3D特效', '着色器']
摘要由CSDN通过智能技术生成

最近写一个题目,要求将一组员工实体类转换成xml文件,或将xml文件转换成一组实体类。题目不难,但写完感觉可以利用泛型和反射将任意一个实体类和xml文件进行转换。于是今天下午立马动手

试了下,做了个简单的模型,可以将简单的实体类和xml文件进行相互转换,但对实体类的属性类型有限制,目前只支持String, Integer, Double三种类型。但是后面可以扩展。

我的大概思路是这样的,只要能拿到实体类的类型信息,我就能拿到实体类的全部字段名称和类型,拼属性的set和get方法更是简单明了,这时候只需要通过方法的反射,将xml文件的数据读取出来给这个反射即可。

反过来只要给我一个任意对象,我就能通过反射拿到该对象所有字段的值,这时候在写xml文件即可。

具体代码如下:

package com.pcq.entity;

import java.io.*;

import java.lang.reflect.Field;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;

public class XMLAndEntityUtil {

private static Document document = DocumentHelper.createDocument();

/**

* 判断是否是个xml文件,目前类里尚未使用该方法

* @param filePath

* @return

*/

@SuppressWarnings("unused")

private static boolean isXMLFile(String filePath) {

File file = new File(filePath);

if(!file.exists() || filePath.indexOf(".xml") > -1) {

return false;

}

return true;

}

/**

* 将一组对象数据转换成XML文件

* @param list

* @param filePath 存放的文件路径

*/

public static void writeXML(List list, String filePath) {

Class> c = list.get(0).getClass();

String root = c.getSimpleName().toLowerCase() + "s";

Element rootEle = document.addElement(root);

for(Object obj : list) {

try {

Element e = writeXml(rootEle, obj);

document.setRootElement(e);

writeXml(document, filePath);

} catch (NoSuchMethodException | SecurityException

| IllegalAccessException | IllegalArgumentException

| InvocationTargetException e) {

e.printStackTrace();

}

}

}

/**

* 通过一个根节点来写对象的xml节点&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值