<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 7, 文章 - 12, 評論 - 17, 引用 - 0
    數據加載中……

    bean與xml的相互轉換

    package com.test;

    import java.io.StringBufferInputStream;
    import java.lang.reflect.Field;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;

    import org.apache.commons.beanutils.PropertyUtils;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;

     

    public class BeanXml
    {
     /*
      * 用于 genenateXml()方法
      * 從對象中得到值,以生成xml
      */
     public String getFieldValue(Object objValue )
     {
      StringBuffer valuebuf = new StringBuffer();
      if(objValue.getClass().isArray())
      {
       String [] valueArr = (String[])objValue;
       for(int j=0;j<valueArr.length;j++)
       {
        valuebuf.append("<value>"+valueArr[j]+"</value>");
       }
      }
      if(objValue instanceof java.util.List)
      {
       List list  = (List)objValue;
       for(int j=0;j<list.size();j++)
       {
        valuebuf.append("<value>"+list.get(j)+"</value>");
       }
      }
      else if (objValue instanceof java.util.Date)
         {     
       java.util.Date valueDate = (java.util.Date)objValue;
       SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
       valuebuf.append("<value>"+ formatter.format(valueDate)+"</value>");
      }
         else if (objValue instanceof String )
         {
          valuebuf.append("<value>"+objValue+"</value>");
         }
         else if(objValue instanceof Integer)
         {
          valuebuf.append("<value>"+objValue+"</value>");
         }
         else if(objValue instanceof Double)
         {
          valuebuf.append("<value>"+objValue+"</value>");
         }
         else if(objValue instanceof Float)
         {
          valuebuf.append("<value>"+objValue+"</value>");
         }
      return valuebuf.toString();
     }
     /*
      * 用于generateBean方法
      * 功能:從xml中取值,給對象賦值
      */
     public Object getFieldValue(Object object,String name,List valuelist)
     {
      Object objValue=null;
      Object objType =null;
      String fieldname ="";
      Class cls = object.getClass();
      Field[] fields = cls.getDeclaredFields();
      try
      {
       for(int i=0;i<fields.length;i++)
       {
        fieldname = fields[i].getName();
        if(name.equals(fieldname))
        {
         objType = PropertyUtils.getProperty(object, name);
         objValue = getValueByType(objType,valuelist);
         return objValue;
        }
       }
      }
      catch(Exception e)
      {
       e.printStackTrace();
      }
      return "";
     }
     
     public Object getValueByType(Object objType,List valuelist)
     {
      Object objValue=null;
      try
      {
       if(objType.getClass().isArray())
       {
        String[] arr=null;
        for(int i=0;i<valuelist.size();i++)
        {
         arr=new String[valuelist.size()];
         arr[i]=(String)valuelist.get(i);
        }
        objValue = arr;
       }
       else if (objType instanceof java.util.List)
       {
        objValue = valuelist;
        
       }
       else if (objType instanceof java.util.Date)
          {     
        SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
        formatter.applyPattern("yyyyMMdd");
        objValue = formatter.parse((String)valuelist.get(0));    
       }
          else if (objType instanceof String )
          {
           objValue = (String)valuelist.get(0);
          }
          else if(objType instanceof Integer)
          {
           objValue = Integer.valueOf((String)valuelist.get(0));
          }
          else if(objType instanceof Double)
          {
           objValue = Double.valueOf((String)valuelist.get(0));
          }
          else if(objType instanceof Float)
          {
           objValue = Float.valueOf((String)valuelist.get(0));
          }
      }
      catch(Exception e)
      {
       e.printStackTrace();
      }
      return objValue;
     }
     
     /**
      * 生成xml
      */
     public String generateXML(Object object)
     {
      Class cls = object.getClass();
      Field[] fields = cls.getDeclaredFields();
      String name= "";
      String type ="";
      String value ="";
      StringBuffer buf =new StringBuffer();
      buf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
      buf.append("<package>");
      buf.append("<classname>"+cls+"</classname>");
      try
      {
       for(int i=0;i<fields.length;i++)
       {
        name = fields[i].getName();
        Object objValue = PropertyUtils.getProperty(object, name);
        type = PropertyUtils.getPropertyType(object, name).getName();
        value = getFieldValue(objValue);

        buf.append("<"+name+">");
        buf.append("<property>"+type+"</property>");
        buf.append("<values>"+value+"</values>");
        buf.append("</"+name+">");
       }
       buf.append("</package>");
       
      }catch(Exception e)
      {
       e.printStackTrace();
      }
      return buf.toString();
     }
     /*
      * 生成bean
      */
     public Object generateBean(String strXML)
     {  
      String name ="";
      String type ="";
      List elemlist = new ArrayList();
      
      Object objValue;
      String classname ="";
      Object object =null;
      try
      {
       SAXReader reader = new SAXReader();
       StringBufferInputStream is=new StringBufferInputStream(strXML);
       Document document = reader.read(is);

       Element root = document.getRootElement();
       
       Iterator iter = root.elementIterator();
       if(iter.hasNext())
       {
        classname = ((Element)iter.next()).getTextTrim();
        if(classname.indexOf(" ")>0)
         classname = classname.substring(classname.lastIndexOf(" ")+1);
        object =Class.forName(classname).newInstance();
        for( ;iter.hasNext();)
        {
         Element element = (Element) iter.next();
         name = element.getName();
         type = (element.element("property")).getTextTrim();
         elemlist = element.element("values").elements();
         List valuelist = new ArrayList();
         for(int j=0;j<elemlist.size();j++)
         {
          Element subelement = (Element)elemlist.get(j);
          valuelist.add(subelement.getTextTrim());
         }
         objValue = getFieldValue(object,name,valuelist);
         PropertyUtils.setProperty(object, name, objValue);
        }
       }   
      }catch(Exception e)
      {
       e.printStackTrace();
      }
      return object;
     }
     public static void main(String[] args)
     {
      try
      {
       TestBean tb = new TestBean();
       String [] str = {"123","23"};
       String strxml="";
       List list =new ArrayList();
       list.add("list111");
       list.add("list222");
       list.add("list333");
       tb.id =123;
       tb.setId(123);
       tb.setName("abced");
       tb.setDate(new java.util.Date());
       tb.setArrId(str);
       tb.setList(list);
       BeanXml bx = new BeanXml();
       System.out.println("-------xmlvalue:"+bx.generateXML(tb));
       strxml = bx.generateXML(tb);
       TestBean testb=(TestBean)bx.generateBean(strxml);
       //bx.generateBean(strxml);
       System.out.println("-------id:"+testb.getId());
       System.out.println("-------name:"+testb.getName());
       System.out.println("-------date:"+testb.getDate());
       System.out.println("-------arrid"+testb.getArrId()[1]);
       System.out.println("-------list:"+testb.getList().get(2));
      }catch(Exception e)
      {
       e.printStackTrace();
      }
     }
    }

    posted on 2007-07-07 16:00 劉浪 閱讀(1127) 評論(0)  編輯  收藏 所屬分類: code

    主站蜘蛛池模板: 999zyz**站免费毛片| 特级一级毛片免费看| 久久国产精品成人免费| 不卡一卡二卡三亚洲| 黄床大片免费30分钟国产精品| 亚洲AV无码专区日韩| 思思久久99热免费精品6| 亚洲美日韩Av中文字幕无码久久久妻妇| 亚洲aⅴ无码专区在线观看| 国产真实伦在线视频免费观看| 久久综合亚洲色hezyo| 四虎永久免费网站免费观看| 国产亚洲女在线线精品| 亚洲国产午夜中文字幕精品黄网站| 一级毛片正片免费视频手机看 | 九九免费观看全部免费视频| 亚洲AV永久无码精品一区二区国产 | 毛片a级毛片免费观看品善网 | 特a级免费高清黄色片 | 亚洲a级片在线观看| 成人免费a级毛片无码网站入口| 亚洲乱人伦中文字幕无码| 国产裸模视频免费区无码| 黄色视屏在线免费播放| 91亚洲一区二区在线观看不卡| 在线观看无码AV网站永久免费| 国内成人精品亚洲日本语音 | 亚洲性一级理论片在线观看| 成人五级毛片免费播放| 国产A∨免费精品视频| 亚洲色成人网一二三区| 免费精品国产自产拍观看| 免费无码一区二区三区蜜桃| 亚洲xxxxxx| 国产偷国产偷亚洲清高动态图| 久久aa毛片免费播放嗯啊| 亚洲中文字幕久久精品无码VA| 国产aⅴ无码专区亚洲av麻豆| 日韩在线播放全免费| 免费VA在线观看无码| 91情国产l精品国产亚洲区|