【反射】利用java反射原理将xml文件中的字段封装成对应的Bean
本例使用的xml解析方式为jdom
...
<ROOT>
<Consignment>
...
</Consignment>
</ROOT>
解析xml文件
InputStream xmlFileStream = new FileInputStream(xmlFile);
SAXBuilder builder = new SAXBuilder(new XMLReaderSAX2Factory(false));
Document document = builder.build(xmlFileStream);
Element root = document.getRootElement();
获得Consignment元素
Element consignElement = root.getChild("Consignment");
遍历元素封装Bean
public static Consignment getConsignment(Element consignElement) throws Exception {
Consignment consignment = null;
try {
List<Element> elements = consignElement.getChildren();
Class<?> consignmentClz = Class.forName("com.entity.po.consignment.Consignment");
consignment = (Consignment) consignmentClz.newInstance();
for(Element ele : elements){
CheckTypeUtil.checkType(consignment, consignmentClz, ele);
}
} catch (Exception e) {
throw e;
}
return consignment;
}
/**
* 解析对象时过滤字段属性类型
* @param sampleDnaGene
* @param sampleDnaGeneClz
* @param element
* @throws NoSuchFieldException
* @throws IllegalAccessException
*/
public static void checkType(Object object, Class<?> objectClz, Element chiledEle)
throws NoSuchFieldException, IllegalAccessException {
Field field = objectClz.getDeclaredField(chiledEle.getName());
field.setAccessible(true);
if("java.lang.Integer".equals(field.getType().getName())
|| "int".equals(field.getType().getName())){
if (!StringUtils.isEmpty(chiledEle.getTextTrim())) {
field.set(object,Integer.parseInt(chiledEle.getTextTrim()));
}
}else if("java.lang.Long".equals(field.getType().getName())
|| "long".equals(field.getType().getName())){
if(!StringUtils.isEmpty(chiledEle.getTextTrim())){
field.set(object,Long.parseLong(chiledEle.getTextTrim()));
}
}else if("java.util.Date".equals(field.getType().getName())){
if (!StringUtils.isEmpty(chiledEle.getTextTrim())) {
field.set(object, DateTools.stringToDate(chiledEle.getTextTrim()));
}
}else if("java.lang.Double".equals(field.getType().getName())
|| "double".equals(field.getType().getName())){
if(!StringUtils.isEmpty(chiledEle.getTextTrim())){
field.set(object,Double.parseDouble(chiledEle.getTextTrim()));
}
}else if("java.lang.Float".equals(field.getType().getName())
|| "float".equals(field.getType().getName())){
if(!StringUtils.isEmpty(chiledEle.getTextTrim())){
field.set(object,Float.parseFloat(chiledEle.getTextTrim()));
}
}else if("java.lang.Short".equals(field.getType().getName())
|| "short".equals(field.getType().getName())){
if(!StringUtils.isEmpty(chiledEle.getTextTrim())){
field.set(object,Short.parseShort(chiledEle.getTextTrim()));
}
}else{
if (!StringUtils.isEmpty(chiledEle.getTextTrim())) {
field.set(object, chiledEle.getTextTrim());
}else{
field.set(object,null);
}
}
}
【反射】利用java反射原理将xml文件中的字段封装成对应的Bean的更多相关文章
- web.xml文件中的7个错误的安全配置
web.xml文件中的7个错误的安全配置 关于Java的web.xml文件中配置认证和授权有大 量 的 文章.本文不再去重新讲解如何配置角色.保护web资源和设置不同类型的认证,让我们来看看web.x ...
- Java从入门到精通——技巧篇之利用dom4j取出XML文件中的数据
在我们做项目的时候会经常用到XML文件用来配置系统,XML让系统更加的具有了灵活性,Java如何从XML中取出我们想要的数据呢?下面是我利用DOM4J来实现取出XML文件中的数据. XML文件 < ...
- Spring MVC框架下在java代码中访问applicationContext.xml文件中配置的文件(可以用于读取配置文件内容)
<bean id="propertyConfigurer" class="com.****.framework.core.SpringPropertiesUtil& ...
- java web 通过前台输入的数据(name-value)保存到后台 xml文件中
一:项目需求,前端有一个页面,页面中可以手动输入一些参数数据,通过点击前端的按钮,使输入的数据保存到后台生成的.xml文件中 二:我在前端使用的是easyui的propertygrid,这个能通过da ...
- XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)
XML序列化 #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...
- 读取xml文件中的配置参数实例_java - JAVA
文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding=" ...
- web.xml文件中的web-app元素 部署
[转载]web.xml文件中的web-app元素 (2012-05-24 13:35:57) 转载▼ 标签: 转载 分类: java 挺全 的 呵呵呵 转了 原文地址:web.xml文件中的web-a ...
- web.xml文件中加载顺序的优先级
在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...
- Java眼中的XML文件写入
创建DOM方式生成XML文档 DOMTest package com.imooc.domtest.test; import java.io.File; import java.io.IOExcepti ...
随机推荐
- 谷歌pixel手机解BL锁、刷机、破解电信(史上最详细的帖子)
本文根据网上已有内容进行整理,对每一个步骤都进行了实践,运气爆棚,几乎没有出现什么重大错误,小错误也进行了很好地解决.因此,十分感激那些为折腾google pixel的IT爱好者,为我提供了无穷的帮助 ...
- UOJ #76 【UR #6】懒癌
确实是一道很不错的题啊. 题目链接 题意 感觉也没什么特别简洁的版本,大家直接看题面吧. 题解 我第一次看到这个类似问题的背景是疯狗,因此下面的题解不自觉的代入了...大家明白意思就好. 我们考虑对于 ...
- checkStyle 错误普及
1Type is missing a javadoc commentClass 缺少类型说明 2“{” should be on the previous line“{” 应该位于前一行.解决方法: ...
- Goldbach`s Conjecture LightOJ - 1259 (素数打表 哥德巴赫猜想)
题意: 就是哥德巴赫猜想...任意一个偶数 都可以分解成两个(就是一对啦)质数的加和 输入一个偶数求有几对.. 解析: 首先! 素数打表..因为 质数 + 质数 = 偶数 所以 偶数 - 质数 = 质 ...
- TortoiseSVN 忽略文件 忽略已提交文件
主要以下两种情况: 1.首次提交就做好了忽略拦截:项目首次提交到svn服务器的时候,把该删的删了,然后设置忽略规则,就没问题了. 2.提交一段时间忽然想忽略拦截:经常碰到的,发现设置忽略规则后,没法生 ...
- 【刷题】BZOJ 2069 [POI2004]ZAW
Description 在Byte山的山脚下有一个洞穴入口. 这个洞穴由复杂的洞室经过隧道连接构成. 洞穴的入口是一条笔直通向"前面洞口"的道路. 隧道互相都不交叉(他们只在洞室相 ...
- [HNOI2005]狡猾的商人 ,神奇做法——贪心
洛谷P2294 [HNOI2005]狡猾的商人 ,神奇做法--贪心 看到大牛都是写的差分约束或带权并查集,本蒟蒻都不太会(还是用差分约束过了的QAQ),但是想出一种贪心的策略,运用神奇的优先队列实现. ...
- WinRM不起作用 Connecting to remote server failed with the following error message : WinRM cannot complete the operation
当我运行下面的 powershell 脚本时: $FarmAcct = 'domain\user' $secPassword = ConvertTo-SecureString 'aaa' -AsP ...
- 【转】CPU上下文切换的次数和时间(context switch)
http://iamzhongyong.iteye.com/blog/1895728 什么是CPU上下文切换? 现在linux是大多基于抢占式,CPU给每个任务一定的服务时间,当时间片轮转的时候,需要 ...
- luogu2827 [NOIp2016]蚯蚓 (模拟)
可以直观地想到用优先队列来做,但数据范围是O(n)的 然后我们发现,因为我们每次挑出来的蚯蚓是单调的,所以把每个切成两段后,那两段也是对应单调的 也就是说,算上最一开始的蚯蚓,我们一共维护三个队列,三 ...