Java将ibatis中返回的List数据转换成xml

基本数据类User,ibatis通过调用queryForList返回结果数据List<User>

public class User {
	private String user_id;
	private String user_name;
	private String request_ip;
	private String login_time;
	

	public String getUser_id() {
		return user_id;
	}
	public void setUser_id(String userId) {
		user_id = userId;
	}
	public String getUser_name() {
		return user_name;
	}
	public void setUser_name(String userName) {
		user_name = userName;
	}
	public String getRequest_ip() {
		return request_ip;
	}
	public void setRequest_ip(String requestIp) {
		request_ip = requestIp;
	}
	public String getLogin_time() {
		return login_time;
	}
	public void setLogin_time(String loginTime) {
		login_time = loginTime;
	}
}

listToXml方法,将List<User> list 的结果转换成xml表示的方式,返回String文本。

	
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.List;

public class ListToXml {
    
    public static String listToXml(List list) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
        String xml="<?xml version='1.0' encoding='gb2312'?><list>";
        for(int i=0;i<list.size();i++){
            //获取list下的类对象
            Object bean = list.get(i);
            //获取对象的名称
            String beanName = bean.getClass().getSimpleName();
            //将对象名称作为节点名
            xml += "<"+beanName +">";
            //获取对象中所有的方法名,用于截取出其中的元素名称
            Method[] methods = bean.getClass().getMethods();
            for(int j=0;j<methods.length;j++){
                String methodName =methods[j].getName();
                //通过get方法获取元素名,同时过滤掉类的固有getClass方法。
                if(methodName.startsWith("get") && !(methodName.equals("getClass")) ){
                    //元素名称的首字母改成小写
                    String elementName = methodName.substring(3,4).toLowerCase()+methodName.substring(4);
                    //获取元素的值
                    String elementValue =(String) methods[j].invoke(bean, null);
                    //如果元素是Date类型,格式化处理
                    if (methods[j].getReturnType().equals(Date.class)){
                        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                        elementValue = sdf.format(methods[j].invoke(bean, null));
                    };
                    xml += "<"+elementName+">"+elementValue+"</"+elementName+">";
                }
            }
            xml+="</"+beanName+">";
        }
        xml += "</list>";
        return xml;
    }
    
}


测试:

ibatis的sql配置

<?xml version="1.0" encoding= "GBK"?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"		 
  "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
   
<sqlMap namespace="Users" >
	<select id= "getUserInfo" parameterClass ="java.lang.String" resultClass="com.test.beans.User" >
		select user_id,user_name,request_ip,login_time from user_online where user_id = #user_id#
	</select>
     
</sqlMap>

java测试代码部分:
	List<User> list = dao.getUserInfo("xwl");
        String xml = ListToXml.listToXml(list); 
        System.out.println(xml);


输出结果:

<?xml version='1.0' encoding='gb2312'?><list><User><user_id>xwl</user_id><user_name>小五郎</user_name><request_ip>127.0.0.1</request_ip><login_time>2015-07-14 17:26:56.26</login_time></User></list>


输出的xml可以作为返回数据传到前端,比如jQuery.post设置返回数据格式为'xml',

    <% 
    	List<User> list= (List<User>) request.getAttribute("result");
    	String xml = ListToXml.listToXml(list);
	response.getWriter().write(xml);
	response.getWriter().flush();
	response.getWriter().close();  
	%>	



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值