网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 网络学院 >> 程序设计 >> Java编程 >> 文章正文
  Xml2Bean:为Webservice返回Collection准备的一个实用类            【字体:
Xml2Bean:为Webservice返回Collection准备的一个实用类
作者:佚名    文章来源:不详    点击数:    更新时间:2007-9-2    

作者:fbysss
msn:jameslastchina@hotmail.com 
blog:blog.csdn.net/fbysss
声明:本文由fbysss原创,转载请注明出处
 
关键字:Webservice,Xml2Bean
 

背景:Webservice 返回的是xml,如何得到Collection类型呢?最简单的方式就是把xml还原成Collection。
正在装载数据……

准备包:commons-digester-1.8.jar
源代码1:Xml2Bean

package cn.edu.ustb.db.task.util;
/**
 * <p>标题: Xml2Bean.java</p>
 * <p>功能描述: 用于将xml转换成bean<br>
 *
 * </p>
 * <p>版权: Copyright (c) 2007</p>
 * <p>公司: </p>
 * 
@author fbysss 
 * 
@version 1.0
 * 
 * </p>
 * <p>修改记录:</p>
 * 创建时间:2007-6-23 13:19:39
 * 类说明:要求jdk1.5版本以上。
 
*/

import java.io.IOException;
import java.io.StringReader;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;
import cn.edu.ustb.db.task.po.Manager;
public class Xml2Bean {
    
public List getObjects(String xml,Object obj){
        String beanName 
= obj.getClass().getSimpleName();
        StringReader xmlReader 
= new StringReader(xml);
        Digester digester 
= new Digester();
        digester.setValidating(
true);
        digester.addObjectCreate(
"beans", ArrayList.class);    
        digester.addObjectCreate(
"beans/"+beanName ,obj.getClass());
        digester.addSetProperties(
"beans/"+beanName);     
        addSetters(obj, beanName, digester);
        digester.addSetNext(
"beans/"+beanName, "add");
        ArrayList beans 
= null;
        
try {
            beans 
= (ArrayList) digester.parse(xmlReader);
        }
 catch (IOException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
 catch (SAXException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

        
return beans;
    }

    
/***
     * 一次性添加bean属性的Setter.否则就得一个一个的添加,很费劲。(也许digester有这个功能,但我没找到,只好自己写一个方法了)
     * 
@param obj
     * 
@param beanName
     * 
@param digester
     
*/

    
private void addSetters(Object obj,String beanName, Digester digester) {
        Field[] fields 
= obj.getClass().getDeclaredFields();
        
for (Field field : fields) {
            digester.addBeanPropertySetter(
"beans/"+beanName+"/"+field.getName());
        }
        
        
/*digester.addBeanPropertySetter("beans/"+beanName+"/mid");
        digester.addBeanPropertySetter("beans/"+beanName+"/mclass");
        digester.addBeanPropertySetter("beans/"+beanName+"/mname");
        
*/

    }

    
    
public static final void main(String args[]){
        Xml2Bean x2b 
= new Xml2Bean();
        String xml 
= "<?xml version='1.0' ?> <beans><Manager> <mclass>1</mclass> <mid>1</mid><mname>sss</mname></Manager> <Manager><mclass>2</mclass><mid>1</mid><mname>sss2</mname></Manager></beans>";
        List lst 
= x2b.getObjects(xml, new Manager());
        
for (Object object : lst) {
            Manager manager 
= (Manager) object;
            System.out.println(
"id:"+manager.getMid()+",name:"+manager.getMname());
        }

    }

    
}

源代码2:Manager.java

package cn.edu.ustb.db.task.po;
import java.util.HashSet;
import java.util.Set;

public class Manager  implements java.io.Serializable {


    
// Fields    

     
private Integer mid;
     
private String mname;
     
private Integer mclass;


    
// Constructors

    
/** default constructor */
    
public Manager() {
    }


    
/** minimal constructor */
    
public Manager(Integer mid) {
        
this.mid = mid;
    }

    
    
/** full constructor */
    
public Manager(Integer mid,String mname, Integer mclass) {
        
this.mid = mid;
        
this.mname = mname;
        
this.mclass = mclass;

    }

    

   
    
// Property accessors

    
public Integer getMid() {
        
return this.mid;
    }

    
    
public void setMid(Integer mid) {
        
this.mid = mid;
    }



    
public String getMname() {
        
return this.mname;
    }

    
    
public void setMname(String mname) {
        
this.mname = mname;
    }


    
public Integer getMclass() {
        
return this.mclass;
    }

    
    
public void setMclass(Integer mclass) {
        
this.mclass = mclass;
    }

}





本文来源:http://blog.csdn.net/fbysss/archive/2007/07/14/1690038.aspx
站内文章搜索 高级搜索
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
     用java实现web服务器
     用java快速开发linux gu…
     正则表达式分解siemens交…
     [portal参考手册]目录
     jsp中调用oracle存储过程…
  • JSP中JavaBean的生命周期

  • Ant入门-配置和使用     选…

  • SPRING+STRUTS+HIBERNATE登录…

  • Cookie又见Cookie-使用Html…

  • javabean+mysql数据库连接池

  • tomcat下配置jspservletbean…

  • Boyer-Moore String Searchi…

  • 使用(C++库)fstream读写文件

  • Windows API一日一练(25)Cre…

  • C++ Thread

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    网络学院©2007 www.23book.net
    为您提供web编程,vb编程,vc编程,服务器架设管理,数据库设计等方面的知识 站长:David