XStream解析XML

转自:
[url=http://www.oschina.net/code/snippet_557540_18576]解析支付宝单笔交易查询接口返回的XML信息[/url]

[url=http://www.oschina.net/code/snippet_116183_14202]java 利用Xstream注解生成和解析xml[/url]

一、JavaBean代码
package cn.com.songjy.test.xml.xstream;

import java.util.List;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
import com.thoughtworks.xstream.annotations.XStreamConverter;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import com.thoughtworks.xstream.converters.extended.ToAttributedValueConverter;

@XStreamAlias("alipay")
public class Alipay {

@XStreamAlias("is_success")
private String isSuccess;

@XStreamAlias("error")
private String error;

@XStreamAlias("request")
private Request request;

@XStreamAlias("response")
private Response response;

public static class Request {

@XStreamImplicit(itemFieldName = "param")
private List<Param> param;

public List<Param> getParam() {
return param;
}

public void setParam(List<Param> param) {
this.param = param;
}

}

@XStreamAlias("param")
@XStreamConverter(value = ToAttributedValueConverter.class, strings = { "content" })
public static class Param {

public Param(String name, String content) {
super();
this.name = name;
this.content = content;
}

@XStreamAsAttribute
private String name;

private String content;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}

}

public static class Response {

@XStreamAlias("trade")
private Rrade rrade;

public Rrade getRrade() {
return rrade;
}

public void setRrade(Rrade rrade) {
this.rrade = rrade;
}

}

public static class Rrade {

@XStreamAlias("body")
private String body;
@XStreamAlias("buyer_email")
private String buyer_email;
@XStreamAlias("buyer_id")
private String buyer_id;
@XStreamAlias("coupon_used_fee")
private String coupon_used_fee;
@XStreamAlias("discount")
private String discount;
@XStreamAlias("flag_trade_locked")
private String flag_trade_locked;
@XStreamAlias("gmt_create")
private String gmt_create;
@XStreamAlias("gmt_last_modified_time")
private String gmt_last_modified_time;
@XStreamAlias("gmt_payment")
private String gmt_payment;
@XStreamAlias("is_total_fee_adjust")
private String is_total_fee_adjust;
@XStreamAlias("operator_role")
private String operator_role;
@XStreamAlias("out_trade_no")
private String out_trade_no;
@XStreamAlias("payment_type")
private String payment_type;
@XStreamAlias("price")
private String price;
@XStreamAlias("quantity")
private String quantity;
@XStreamAlias("seller_email")
private String seller_email;
@XStreamAlias("seller_id")
private String seller_id;
@XStreamAlias("subject")
private String subject;
@XStreamAlias("to_buyer_fee")
private String to_buyer_fee;
@XStreamAlias("to_seller_fee")
private String to_seller_fee;
@XStreamAlias("total_fee")
private String total_fee;
@XStreamAlias("trade_no")
private String trade_no;
@XStreamAlias("trade_status")
private String trade_status;
@XStreamAlias("use_coupon")
private String use_coupon;

public String getBody() {
return body;
}

public void setBody(String body) {
this.body = body;
}

public String getBuyer_email() {
return buyer_email;
}

public void setBuyer_email(String buyer_email) {
this.buyer_email = buyer_email;
}

public String getBuyer_id() {
return buyer_id;
}

public void setBuyer_id(String buyer_id) {
this.buyer_id = buyer_id;
}

public String getCoupon_used_fee() {
return coupon_used_fee;
}

public void setCoupon_used_fee(String coupon_used_fee) {
this.coupon_used_fee = coupon_used_fee;
}

public String getDiscount() {
return discount;
}

public void setDiscount(String discount) {
this.discount = discount;
}

public String getFlag_trade_locked() {
return flag_trade_locked;
}

public void setFlag_trade_locked(String flag_trade_locked) {
this.flag_trade_locked = flag_trade_locked;
}

public String getGmt_create() {
return gmt_create;
}

public void setGmt_create(String gmt_create) {
this.gmt_create = gmt_create;
}

public String getGmt_last_modified_time() {
return gmt_last_modified_time;
}

public void setGmt_last_modified_time(String gmt_last_modified_time) {
this.gmt_last_modified_time = gmt_last_modified_time;
}

public String getGmt_payment() {
return gmt_payment;
}

public void setGmt_payment(String gmt_payment) {
this.gmt_payment = gmt_payment;
}

public String getIs_total_fee_adjust() {
return is_total_fee_adjust;
}

public void setIs_total_fee_adjust(String is_total_fee_adjust) {
this.is_total_fee_adjust = is_total_fee_adjust;
}

public String getOperator_role() {
return operator_role;
}

public void setOperator_role(String operator_role) {
this.operator_role = operator_role;
}

public String getOut_trade_no() {
return out_trade_no;
}

public void setOut_trade_no(String out_trade_no) {
this.out_trade_no = out_trade_no;
}

public String getPayment_type() {
return payment_type;
}

public void setPayment_type(String payment_type) {
this.payment_type = payment_type;
}

public String getPrice() {
return price;
}

public void setPrice(String price) {
this.price = price;
}

public String getQuantity() {
return quantity;
}

public void setQuantity(String quantity) {
this.quantity = quantity;
}

public String getSeller_email() {
return seller_email;
}

public void setSeller_email(String seller_email) {
this.seller_email = seller_email;
}

public String getSeller_id() {
return seller_id;
}

public void setSeller_id(String seller_id) {
this.seller_id = seller_id;
}

public String getSubject() {
return subject;
}

public void setSubject(String subject) {
this.subject = subject;
}

public String getTo_buyer_fee() {
return to_buyer_fee;
}

public void setTo_buyer_fee(String to_buyer_fee) {
this.to_buyer_fee = to_buyer_fee;
}

public String getTo_seller_fee() {
return to_seller_fee;
}

public void setTo_seller_fee(String to_seller_fee) {
this.to_seller_fee = to_seller_fee;
}

public String getTotal_fee() {
return total_fee;
}

public void setTotal_fee(String total_fee) {
this.total_fee = total_fee;
}

public String getTrade_no() {
return trade_no;
}

public void setTrade_no(String trade_no) {
this.trade_no = trade_no;
}

public String getTrade_status() {
return trade_status;
}

public void setTrade_status(String trade_status) {
this.trade_status = trade_status;
}

public String getUse_coupon() {
return use_coupon;
}

public void setUse_coupon(String use_coupon) {
this.use_coupon = use_coupon;
}

}

@XStreamAlias("sign")
private String sign;

@XStreamAlias("sign_type")
private String sign_type;

public String getIsSuccess() {
return isSuccess;
}

public void setIsSuccess(String isSuccess) {
this.isSuccess = isSuccess;
}

public String getSign() {
return sign;
}

public void setSign(String sign) {
this.sign = sign;
}

public String getSign_type() {
return sign_type;
}

public void setSign_type(String sign_type) {
this.sign_type = sign_type;
}

public Request getRequest() {
return request;
}

public void setRequest(Request request) {
this.request = request;
}

public Response getResponse() {
return response;
}

public void setResponse(Response response) {
this.response = response;
}

public String getError() {
return error;
}

public void setError(String error) {
this.error = error;
}

}

二、解析工具代码
package cn.com.songjy.test.xml.xstream;

import java.io.IOException;
import java.io.InputStream;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class XstreamUtil {

public static <T> T XML2Bean(InputStream input, Class<T> clazz)
throws IOException {

XStream xstream = new XStream(new DomDriver());

xstream.processAnnotations(clazz);

return (T) xstream.fromXML(input);
}
}

三、XML示例文件alipay.xml
<alipay>
<is_success>T</is_success>
<request>
<param name="_input_charset">utf-8</param>
<param name="service">single_trade_query</param>
<param name="partner">20889010000000</param>
<param name="out_trade_no">7_20130223150319_26</param>
</request>
<response>
<trade>
<body>北京-7_20130223150319_26</body>
<buyer_email>xx@126.com</buyer_email>
<buyer_id>208812311290894</buyer_id>
<coupon_used_fee>0.00</coupon_used_fee>
<discount>0.00</discount>
<flag_trade_locked>0</flag_trade_locked>
<gmt_create>2013-02-17 15:04:58</gmt_create>
<gmt_last_modified_time>
2013-02-17 15:05:09
</gmt_last_modified_time>
<gmt_payment>2013-02-17 15:05:09</gmt_payment>
<is_total_fee_adjust>F</is_total_fee_adjust>
<operator_role>B</operator_role>
<out_trade_no>7_20130223150319_26</out_trade_no>
<payment_type>1</payment_type>
<price>0.01</price>
<quantity>1</quantity>
<seller_email>zhifubao008@china.cn</seller_email>
<seller_id>2088901059369309</seller_id>
<subject>北京-7_20130223150319_26</subject>
<to_buyer_fee>0.00</to_buyer_fee>
<to_seller_fee>0.01</to_seller_fee>
<total_fee>0.01</total_fee>
<trade_no>2013022356736989</trade_no>
<trade_status>TRADE_SUCCESS</trade_status>
<use_coupon>F</use_coupon>
</trade>
</response>
<sign>6c472babf7bd98ascb97fee1666a3303</sign>
<sign_type>MD5</sign_type>
</alipay>


<alipay>
<is_success>F</is_success>
<error>xxxx</error>
</alipay>


四、测试
public void test() {
Alipay alipay = null;
try {
alipay = XstreamUtil.XML2Bean(new FileInputStream("alipay.xml"),
Alipay.class);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(alipay.getIsSuccess());
System.out.println(alipay.getRequest().getParam().get(0).getContent());
}


[url=http://www.cnblogs.com/hoojo/archive/2011/04/22/2025197.html]xStream完美转换XML、JSON[/url]
[url=http://theron19.iteye.com/blog/1452522]Jackson的对象与json之间的转换[/url]
[url=http://www.cnblogs.com/hoojo/archive/2011/04/22/2024628.html]Jackson 框架,轻易转换JSON[/url]
[url=http://xstream.codehaus.org/annotations-tutorial.html]XStream Annotations Tutorial[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值