[Java] 反射处理属性转换 →→→→→进入此内容的聊天室

来自 , 2019-06-23, 写在 Java, 查看 122 次.
URL http://www.code666.cn/view/7fa732b5
  1. /**
  2.          * 将xml数据根据属性配置文件转换为Incident事件信息
  3.          * @param data
  4.          * @param propers2
  5.          * @return
  6.          */
  7.         private List<IncidentLog> xml2Incident(String data, ProperObject ppobj) {
  8.                 List<IncidentLog> logList = new ArrayList<IncidentLog>();
  9.                 Document doc = null;
  10.                 try {
  11.                         doc = DocumentHelper.parseText(data);
  12.                 } catch (DocumentException e1) {
  13.                         e1.printStackTrace();
  14.                 } // 将字符串转为XML
  15.                 Element rootElt = doc.getRootElement(); // 获取根节点
  16.                 List<Element> list = rootElt.elements();
  17.                 for(Element ele : list){
  18.                         IncidentLog log = new IncidentLog();
  19.                         for (int i = 0; i < ppobj.getChildValueList().size(); i++) {
  20.                                 ProperObject obj = ppobj.getChildValueList().get(i);
  21.                                 Field f;
  22.                                 try {
  23.                                         f = IncidentLog.class.getDeclaredField(obj.getValue());
  24.                                         if(f!=null){
  25.                                                 f.setAccessible(true);
  26.                                                 String value = ele.elementText(obj.getName());
  27.                                                 if("".equals(obj.getName())){//如果未设定属性值,取默认值
  28.                                                         value = obj.getDefaultValue();
  29.                                                 }
  30.                                                 Class<?> clazz = f.getType();  
  31.                                 String type = clazz.getName();  
  32.                                                 if(type.equals("java.sql.Timestamp")){//对Timestap进行处理
  33.                                                         f.set(log, new Timestamp(DateUtil.stringToDate(value).getTime()));
  34.                                                 }else if(type.equals("java.lang.String")){
  35.                                                         if(obj.getChildValueList()!=null && obj.getChildValueList().size()>0){//匹配的数据字典值转换
  36.                                                                 for(ProperObject valueObj: obj.getChildValueList()){
  37.                                                                         if(value.equals(valueObj.getName())){
  38.                                                                                 f.set(log, valueObj.getValue());
  39.                                                                                 break;
  40.                                                                         }
  41.                                                                 }
  42.                                                         }else{
  43.                                                                 f.set(log, value);     
  44.                                                         }
  45.                                                 }
  46.                                         }
  47.                                 } catch (NoSuchFieldException e) {
  48.                                         //e.printStackTrace();
  49.                                 } catch (Exception e){
  50.                                         e.printStackTrace();
  51.                                 }
  52.                         }
  53.                         logList.add(log);
  54.                 }
  55.                 return logList;
  56.         }

回复 "反射处理属性转换"

这儿你可以回复上面这条便签

captcha