`
hfkiss44
  • 浏览: 48585 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

如何将java对象转换成xml

阅读更多
废话不多说:

至于有没有其他的方式  我不知道 这个是我的解决方案  如果有的话  请留言
1.需要导入json-plugin  google的那个  
2.需要json的一个包 这个包具体是什么版本 我也不知道  我会这个包的所有源码上传  不多 就十来个类
import java.io.IOException;
import java.io.PrintWriter;

import org.apache.struts2.ServletActionContext;
import org.json.JSONException;
import org.json.JSONObject;
import org.json.XML;

import com.googlecode.jsonplugin.JSONExeption;
import com.googlecode.jsonplugin.JSONUtil;
   
/**    
 * @author heng
 * @version 1.0    
 * class discription:
 */

public class BaseAction {
	String returnType="json";
	public String getReturnType() {
		return returnType;
	}
	public void setReturnType(String returnType) {
		this.returnType = returnType;
	}
	/**
	 * 此为Ajax返回值序列化方法 此方法默认返回json格式数据
	 * 若客户端可通过设置returnType=xml 或者returnType=json来获取返回值  返回值均为utf-8编码
	 * 
	 */
	public void outPrintJson(Object object) throws JSONException,IOException{
		String returnStr = "";
		try {
			
				if("json".equals(returnType)){
					returnStr=new JSONObject(JSONUtil.serialize(object)).toString(4);	
					System.out.println(returnStr);
			    }if("xml".equals(returnType)){
			    	returnStr="<?xml version=\"1.0\" encoding=\"UTF-8\"?><result>"+XML.toString(new JSONObject(JSONUtil.serialize(object)))+"</result>";
			    	//returnStr=(XML.toJSONObject(returnStr)).toString(4);
			    	System.out.println(returnStr);
			    }
			ServletActionContext.getResponse().setCharacterEncoding("UTF-8");
			ServletActionContext.getResponse().setHeader("Cache-Control","no-cache");
			PrintWriter out = ServletActionContext.getResponse().getWriter();
			out.print(returnStr);
			out.flush();
			out.close();
		}  catch (IOException e) {		
			e.printStackTrace();
			throw e;
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw e;
		} catch (JSONExeption e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
}

这个是我的baseaction  客户端调用action的时候只需要将设定returnType 的类型  那么outPrintJson 就会将action序列话为xml串或者序列化为json串
下面大体讲解一下代码:
   1.返回json

    returnStr=new JSONObject(JSONUtil.serialize(object)).toString(4); 
JSONUtil.serialize(object) 是json-plugin的序列话json方法  可以无限调用javaobject里面属性的get方法 将object彻底序列成json 不过碰到序列化http路径之类的值的时候会有问题  所以如果返回值里面有url路径之类  那么就在用JSONObject 再次序列 这样就没问题了  原样输出

  2.返回xml
    returnStr="<?xml version=\"1.0\" encoding=\"UTF-8\"?><result>"+XML.toString(new JSONObject(JSONUtil.serialize(object)))+"</result>";
由于我下载到的这个包不能彻底序列对象内部的对象属性   所以还是用google提供的json包将对象彻底序列成json对象  然后用次字符串再构造JSONObject对象  最后再用xml的toString方法序列  其xml也可原样输出url路径

google提供的是jar包   我下载到的是rar包

望大家拍板

  
0
0
分享到:
评论
6 楼 fwyhf 2013-03-04  
师兄,如果我们使用的不是Object而是一个List需要什么特殊处理吗?还是直接将参数改成List?
5 楼 495372396 2013-01-16  
mark
4 楼 qingling600 2012-08-08  
兄弟啊,JSONExeption类,jsonplugin-0.7.jar 这个包的吗? 我怎么到不进去啊,
} catch (com.googlecode.jsonplugin.JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
只有这样写才行的。 不都import进来。
3 楼 qingling600 2012-08-08  
谢谢了,你说的方法还在实践中。
2 楼 hfkiss44 2010-01-11  
搜了一下  XStream有人06年就在javaeye发帖了 呵呵 谢谢kevinguo007  
1 楼 kevinguo007 2010-01-11  
使用XStream也可以实现Java 对象和XML的转换!

相关推荐

Global site tag (gtag.js) - Google Analytics