博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dom4J XML转bean
阅读量:2387 次
发布时间:2019-05-10

本文共 2639 字,大约阅读时间需要 8 分钟。

package com.baiwang.bop.utils;import com.baiwang.bop.client.BopException;import org.dom4j.Element;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;/** * Created by ChengLuchao on 2017/8/12. */public class XmlUtil {    /**     * Element转list     *     * @param root  ontnull     * @param clazz ontnull     * @param 
ontnull * @return bean */ public static
List
getList(Element root, Class
clazz) { List
list = new ArrayList<>(); try { List
elements = root.elements(); for (int i = 0; i < elements.size(); i++) { T t = getBean(elements.get(i), clazz); list.add(t); } } catch (Exception e) { throw new BopException(e); } return list; } /** * Element转Bean * * @param root ontnull * @param clazz ontnull * @param
ontnull * @return bean */ public static
T getBean(Element root, Class
clazz) { try { T t = clazz.newInstance(); Field[] properties = clazz.getDeclaredFields(); Method setmeth; String fieldType; String fieldGenericType; String className; for (int i = 0; i < properties.length; i++) { fieldType = (properties[i].getType() + ""); setmeth = t.getClass().getMethod( "set" + properties[i].getName().substring(0, 1) .toUpperCase() + properties[i].getName().substring(1), properties[i].getType()); if ("interface java.util.List".equals(fieldType)) { fieldGenericType = properties[i].getGenericType() + ""; String[] sp1 = fieldGenericType.split("<"); String[] sp2 = sp1[1].split(">"); className = sp2[0]; Object listNode = getList(root.element(properties[i].getName()), Class.forName(className)); setmeth.invoke(t, listNode); } else { setmeth.invoke(t, root.elementText(properties[i].getName())); } } return t; } catch (Exception e) { throw new BopException(e); } } /** * 判断是否是合法的list * */ public static boolean isList(Element root) { int type = 0; if (root != null) { List
elements = root.elements(); String elementName; String elementNameFlag; if (elements != null && elements.size() > 0) { elementNameFlag = elements.get(0).getName(); for (int i = 1; i < elements.size(); i++) { elementName = elements.get(i).getName(); if (elementNameFlag.equals(elementName)) { // 是list type = 1; } else { if (type == 1) { throw new BopException( "This XML is not in the right format," + "please add a parent node for Node of the same name!"); } else { elementNameFlag = elementName; } } } } } if (type == 1) { return true; } else { return false; } }}

 

posted @
2017-08-16 22:46 阅读(
...) 评论(
...)

转载地址:http://tujab.baihongyu.com/

你可能感兴趣的文章
C++ static 语义
查看>>
Linux Cgroups概述
查看>>
centos7 硬盘性能测试
查看>>
cgroup使用--cpu资源限制
查看>>
cgroup使用--memory资源限制
查看>>
Redis 单机环境搭建
查看>>
elasticsearch 单机环境搭建
查看>>
spark 独立模式部署
查看>>
Redis 基础命令 --- String篇
查看>>
Redis 基础命令 --- Hash篇
查看>>
Redis 基础命令 --- List篇
查看>>
Redis 基础命令 --- Set篇
查看>>
Redis数据库篇 -- 生存时间
查看>>
面向对象设计基本原则
查看>>
Redis数据库篇 -- 事务
查看>>
hadoop 完全分布式环境搭建
查看>>
HDFS 回收站
查看>>
hadoop 完全分布式HA高可用集群(手工切换)搭建
查看>>
hadoop 完全分布式HA高可用集群(自动切换)搭建
查看>>
Hbase shell常见命令
查看>>