本例使用的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的更多相关文章

  1. web.xml文件中的7个错误的安全配置

    web.xml文件中的7个错误的安全配置 关于Java的web.xml文件中配置认证和授权有大 量 的 文章.本文不再去重新讲解如何配置角色.保护web资源和设置不同类型的认证,让我们来看看web.x ...

  2. Java从入门到精通——技巧篇之利用dom4j取出XML文件中的数据

    在我们做项目的时候会经常用到XML文件用来配置系统,XML让系统更加的具有了灵活性,Java如何从XML中取出我们想要的数据呢?下面是我利用DOM4J来实现取出XML文件中的数据. XML文件 < ...

  3. Spring MVC框架下在java代码中访问applicationContext.xml文件中配置的文件(可以用于读取配置文件内容)

    <bean id="propertyConfigurer" class="com.****.framework.core.SpringPropertiesUtil& ...

  4. java web 通过前台输入的数据(name-value)保存到后台 xml文件中

    一:项目需求,前端有一个页面,页面中可以手动输入一些参数数据,通过点击前端的按钮,使输入的数据保存到后台生成的.xml文件中 二:我在前端使用的是easyui的propertygrid,这个能通过da ...

  5. XML序列化 判断是否是手机 字符操作普通帮助类 验证数据帮助类 IO帮助类 c# Lambda操作类封装 C# -- 使用反射(Reflect)获取dll文件中的类型并调用方法 C# -- 文件的压缩与解压(GZipStream)

    XML序列化   #region 序列化 /// <summary> /// XML序列化 /// </summary> /// <param name="ob ...

  6. 读取xml文件中的配置参数实例_java - JAVA

    文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 paras.xml文件 <?xml version="1.0" encoding=" ...

  7. web.xml文件中的web-app元素 部署

    [转载]web.xml文件中的web-app元素 (2012-05-24 13:35:57) 转载▼ 标签: 转载 分类: java 挺全 的 呵呵呵 转了 原文地址:web.xml文件中的web-a ...

  8. web.xml文件中加载顺序的优先级

    在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...

  9. Java眼中的XML文件写入

    创建DOM方式生成XML文档 DOMTest package com.imooc.domtest.test; import java.io.File; import java.io.IOExcepti ...

随机推荐

  1. MT【58】反演圆和极线极点和谐统一

    解答:如图 评:1.反演圆及其性质介绍: 评2:此题的源头是1995年全国卷压轴题,这里用极线极点的相关性质也可以处理: 注:用相关点法很容易得到轨迹.

  2. BZOJ 3745: [Coci2015]Norma(分治)

    题意 给定一个正整数序列 \(a_1, a_2, \cdots, a_n\) ,求 \[ \sum_{i=1}^{n} \sum_{j=i}^{n} (j - i + 1) \min(a_i,a_{i ...

  3. mycat实现简单的mysql集群负载均衡

    什么是mycat呢? 简单理解为一个MySQL中间件,它支持分流.基于心跳的自动故障切换,支持读写分离,支持mysql主从,基于Nio管理线程的高并发… 详见官网:http://www.mycat.i ...

  4. 添加AD RMS role时,提示密码不能被验证The password could not be validated

    "The password could not be validated" when attempting to provision an AD RMS server. Sympt ...

  5. 导出SharePoint2013用户及权限

    cls Add-PSSnapin Microsoft.SharePoint.PowerShell -ea 0 $site = New-Object Microsoft.SharePoint.SPSit ...

  6. 面试 -- fragment生命周期

    Android 3.0 (Api 11)引入: Fragment具有重用,易适配(平板和手机之间的)优点: 依赖Activity,生命周期受到Activity的生命周期影响: fragment生命周期 ...

  7. 在Sqlite中通过Replace来实现插入和更新

      你可能在批量处理一个事务的时候,想要批量插入一系列的数据,但是这些数据当添加完一次之后,重新添加的时候,你不想要重新添加,只是想将原有的数据进行更新,例如:我想要通过Excel将一系列的图书导入到 ...

  8. 描述符__get__(),__set__(),__delete__()(三十七)

    http://www.cnblogs.com/linhaifeng/articles/6204014.html#_label12 描述符是什么:描述符本质就是一个新式类,在这个新式类中,至少实现了__ ...

  9. python在数据处理中常用的模块之matplotlib

    <利用python进行数据分析>读书笔记--第八章 绘图和可视化 python 画子图(add_subplot & subplot)

  10. You are using safe update mode and you tried to update a table--mysql

    SET SQL_SAFE_UPDATES = 0;delete from cms_article_data where id in(SELECT id FROM jeesite.cms_article ...