转自:
解析支付宝单笔交易查询接口返回的XML信息
及
java 利用Xstream注解生成和解析xml
一、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());
}
xStream完美转换XML、JSON
Jackson的对象与json之间的转换
Jackson 框架,轻易转换JSON
XStream Annotations Tutorial
分享到:
相关推荐
本篇文章将深入探讨XStream解析XML的示例,帮助你理解和掌握这一强大的工具。 首先,我们需要理解XStream的基本用法。XStream的核心概念是通过为Java对象定义一个映射,使得对象的字段与XML元素一一对应。这可以...
**XStream解析XML实例** 在Java开发中,处理XML数据是一项常见的任务,XStream库提供了一个简单而强大的方式来将Java对象序列化为XML,以及从XML反序列化回Java对象。这个实例将深入探讨如何使用XStream进行XML操作...
本篇文章将深入探讨如何利用Xstream解析XML文件,并将解析后的数据存储到MySQL数据库中。 首先,我们需要了解Xstream的基本用法。Xstream的核心在于创建一个`XStream`实例,然后通过这个实例来转换XML和Java对象。...
以下是使用XStream解析XML和POJO双向转化的基本步骤: 1. 引入XStream库:在Java工程中,需要添加XStream的jar包,通常可以通过Maven或Gradle等构建工具管理依赖。在这个项目中,"lib"目录下应该包含XStream的jar...
* xstream 解析xml测试,本程序使用两种方式进行解析 * 分别为:注解方式与编程设置别名方式 * 注解方式代码更为简单,但对model需要用注解方式编写 * 编程设置别名方式代码稍复杂,但更灵活。 * @author 蜜我 ...
XStream会自动处理这个映射过程,无需编写复杂的DOM或SAX解析代码。 下面是一个简单的Java类示例,用于表示XML文档中的一个“Person”实体: ```java public class Person { private String name; private int ...
**XStream XML解析** XStream 是一个开源的 Java 库,它提供了一种简单而有效的方式来将 Java 对象序列化为 XML 和从 XML 反序列化回 Java 对象。这个库的强大之处在于其简洁的API和对复杂Java对象模型的处理能力。...
在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用在各种系统间的数据...实际应用中,开发者可以根据这些知识对XML数据进行读取、解析和存储,提升开发效率和代码可读性。
然而,处理XML数据时,解析和转换为可操作的对象是一个常见挑战。这时,XStream库就派上了用场。XStream是一个Java库,它能将Java对象序列化为XML,同时也能将XML反序列化为Java对象,极大地简化了XML处理过程。 ...
android 使用XStream解析xml的实例 android平台上,解析xml文件是一种非常常见的操作。XStream是一个高性能的XML解析库,它可以将xml文件转换成Java对象,从而方便地进行数据处理。本文将介绍如何使用XStream解析...
XStream支持多种XML解析器,包括XPP3和JAXP DOM,用户可以根据性能和兼容性需求选择合适的解析器。例如,使用XPP3时,可以通过`new XStream(newXppDriver())`创建XStream实例;若使用JAXP DOM,则调用`new XStream...
在`xmlAnalysis`文件夹中,可能包含了一个简单的Java程序,演示了如何使用DOM、SAX、StAX和XStream解析XML文件,并展示了XStream如何在JavaBean与XML之间进行转换。你可以运行这些代码,观察输出结果,以加深理解。...
XStream是一个强大的库,它使得XML与Java对象之间的转换变得简单。在这个主题中,我们将深入探讨如何使用XStream进行XML与Java对象的互换,并了解其工作原理。 首先,XStream是一个开源库,由Johannes Leutenegger...
xstream方式解析及生成xml文件
解析XML回Java对象同样简单,只需使用`fromXML()`方法: ```java String xmlInput = "<person id='1'><firstName>John</firstName><lastName>Doe</lastName></person>"; Person parsedPerson = (Person) xstream....
在XStream解析XML文件时,通常需要两个关键的jar包: 1. **xpp3_min-1.1.3.4.O.jar**:这是Minimal XML Pull Parser(XPP3)的轻量级版本,它是一个高效的XML解析器,用于读取XML文档。XPP3被XStream用来解析XML流...
本篇文章将详细介绍如何利用Xstream进行XML的生成和解析。 **一、Xstream简介** Xstream是Java社区中的一款开源库,由Johannes Link创建,它的设计目标是使XML序列化和反序列化变得简单直观。Xstream的核心理念是...
- `xmlpull-1.1.3.1.jar`:XML Pull API,它是轻量级的解析XML的库,用于XPP3。 5. **XML Pull Parsing**: - XML Pull Parsing是一种事件驱动的解析模型,与SAX类似,但更简单,不需要解析器的回调函数。XPP3库...
- `xpp3-1.1.3.3.jar`:XStream使用XPP3作为其默认的XML解析器。 2. **创建实体对象**:根据XML文件中的数据结构创建对应的实体类。 3. **XML文件写入**: - 创建XStream实例。 - 使用`toXML()`方法将实体对象...