【反射】利用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 ...
随机推荐
- cordic
cordic里向量旋转得到新向量,利用的是旋转矩阵 摘自百度百科维基百科 旋转矩阵(Rotation matrix)是在乘以一个向量的时候改变向量的方向但不改变大小的效果的矩阵.旋转矩阵不包括反演,它 ...
- python 抽象类与接口类
几个类 实现的方法都一致的话 就继承同一个父类 在父类写一个公共方法 给子类使用
- json_decode()相关报错
错误描述 PHP Warning: json_decode() expects parameter 1 to be string, array given in xxx.php on line 29 ...
- NodeJs加载站点的所有页面不存在则404
演示 链接:https://pan.baidu.com/s/1TZ351m3wUWZpq46qGbejjg 密码:ijj5 代码: var http = require("http" ...
- 自学Aruba7.2-Aruba安全认证-Portal认证(web页面配置)
点击返回:自学Aruba之路 自学Aruba7.2-Aruba安全认证-Portal认证(web页面配置) 步骤1 建立AP Group,命名为testportal-group 步骤2 将AP加入到 ...
- Intent 传递数据
使用INtent 在页面之间跳转,数据传递是必须的,我们可以直接在intent 对象上放置基本数据类型的数据,也可以放置字符串和其他数据类型数据.对于其他数据类型,实现了Parcelable 或Ser ...
- luogu3707 相关分析 (线段树)
把式子展开以后会发现,可以用线段树维护$x,y,x*y,x^2$分别的区间和 然后操作有区间加和区间修改 这个pushdown的时候,如果改和加的标记同时存在,那一定是先改再加,要不然加的标记已经被清 ...
- 决策单调性优化dp
决策单调性: 对于一些dp方程,经过一系列的猜想和证明,可以得出,所有取的最优解的转移点(即决策点)位置是单调递增的. 即:假设f[i]=min(f[j]+b[j]) (j<i) 并且,对于任意 ...
- Skype 使用小技巧
原文发布在个人独立博客上,链接:http://maxpeng.vipcloud.me/2016/09/01/skype-tricks-tips/ Skype 作为一个即时聊天工具,相信大家都不陌生 ...
- k8s部署prometheus
https://www.kancloud.cn/huyipow/prometheus/527092 https://songjiayang.gitbooks.io/prometheus/content ...