不同的结果集转换成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("没有数据");
		}
	}

你可能感兴趣的:(xml,J#)