不同的结果集转换成XML

 /**
* 方法将RowSet数据结果集进行数据转换成XML文件
* StringBuffer 进行字符缓存
* ResultSetMetaData 获得RowSet的列名
* xml文件格式如下:
*
* @param RowSet
* @return string
*/
public static String convertResultSetToXML(ResultSet rs){
StringBuffer sb = new StringBuffer();
try{
ResultSetMetaData rsmd = rs.getMetaData();
if (rsmd.getColumnCount()>=0){

///sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
///sb.append("<response>");

while(rs.next()){
sb.append("<row>\n");
for(int j=1;j<=rsmd.getColumnCount();j++){
sb.append("<" +rsmd.getColumnName(j).toLowerCase()+ ">")
.append( rs.getObject(j)==null?"":rs.getObject(j) )
.append("</" +rsmd.getColumnName(j).toLowerCase()+ ">\n");
}
sb.append("</row>\n");
}
///sb.append("</response>");
}

}catch(Exception e){
e.printStackTrace();
}
return sb.toString();
}

/**
* 方法将Map数据结果集进行数据转换成XML文件
* StringBuffer 进行字符缓存
* Map 获得Map的键名和值
*
* xml文件格式
* <?xml version=\"1.0\" encoding=\"UTF-8\"?>
* <key>
* value
* </key>
* @param map
* @return String
*/

public static String convertMapToXML(Map map){
StringBuffer sb = new StringBuffer();
Iterator it = map.entrySet().iterator();
String key ;
String value ;
while(it.hasNext()){
Map.Entry met = (Map.Entry)it.next();
key = (String) met.getKey();
value = (String) met.getValue();

sb.append("<" +key+ ">")
.append( value )
.append("</" +key+ ">");
}
return sb.toString();
}


/**
*
* 这个方法用来处理将 OMElement 类型 转换成 RowSet 类型
*
* 输入的xml数据格式如下:
*<rows>  
* <row>
* <id>123</id>
* <name>Zeven</name>
* </row>
* <row>
* <id>456</id>
* <name>Mike</name>
* </row>
* ...
* </rows>
*
* @param om
* @return
* @throws Exception
*/
public static RowSet convertXML2RowSet(OMElement om) throws Exception{


//第一层
//从<root></root>的下一层
Iterator it = om.getChildren();
OMElement ome;

//第二层
//从<row></row>的下一层
Iterator it2= null;
OMElement ome2;

//多行的记录
List list = new ArrayList();

//一行的字段
Map map = null;
String key = null;//名字
String value = null;//值

try{
while (it.hasNext()) {//第一层行数


ome = (OMElement)it.next();
log.info(ome.toString() );
it2 = ome.getChildren();
map = new Hashtable(); //每行的列数
while( it2.hasNext() ){
ome2 = (OMElement)it2.next();
key = ome2.getLocalName();
value = ome2.getText();
map.put(key, value);
}
list.add(map);
}
CachedRowSet cs = new CachedRowSet();
cs.populate(list);
return cs;


}catch(Exception e){
e.printStackTrace();
throw e;
}
}

/**
* 这个方法用来处理将 ResultSet 类型 转换成 JSONArray 类型
* [user:123,usercode:1234],
* [user:123,usercode:1234]
* @return
*/
public static JSONArray convertResutlSetToJSONArray(ResultSet rs ) throws Exception{

ResultSetMetaData rsmd = rs.getMetaData();
if(rsmd.getColumnCount()>=0){
JSONObject row = null;
JSONArray table = new JSONArray();
while(rs.next()){
row = new JSONObject();
for(int j=1 ,i=rsmd.getColumnCount();j<=i;j++){
row.put( rsmd.getColumnLabel(j).toLowerCase() ,rs.getObject(j)==null?"":rs.getObject(j) );
}
table.put( row );
}
return table;
}else{
throw new ApplicationException("没有数据");
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值