`

XStream解析XML

    博客分类:
  • xml
阅读更多
转自:
解析支付宝单笔交易查询接口返回的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 demo

    本篇文章将深入探讨XStream解析XML的示例,帮助你理解和掌握这一强大的工具。 首先,我们需要理解XStream的基本用法。XStream的核心概念是通过为Java对象定义一个映射,使得对象的字段与XML元素一一对应。这可以...

    XStream解析XML实例

    **XStream解析XML实例** 在Java开发中,处理XML数据是一项常见的任务,XStream库提供了一个简单而强大的方式来将Java对象序列化为XML,以及从XML反序列化回Java对象。这个实例将深入探讨如何使用XStream进行XML操作...

    Xstream解析xml

    本篇文章将深入探讨如何利用Xstream解析XML文件,并将解析后的数据存储到MySQL数据库中。 首先,我们需要了解Xstream的基本用法。Xstream的核心在于创建一个`XStream`实例,然后通过这个实例来转换XML和Java对象。...

    使用xstream解析xml,xml与pojo的双向转化,完整的java 工程

    以下是使用XStream解析XML和POJO双向转化的基本步骤: 1. 引入XStream库:在Java工程中,需要添加XStream的jar包,通常可以通过Maven或Gradle等构建工具管理依赖。在这个项目中,"lib"目录下应该包含XStream的jar...

    xstream 解析XML例程(android)

    * xstream 解析xml测试,本程序使用两种方式进行解析 * 分别为:注解方式与编程设置别名方式 * 注解方式代码更为简单,但对model需要用注解方式编写 * 编程设置别名方式代码稍复杂,但更灵活。 * @author 蜜我 ...

    xstream方式解析xml文件

    xstream方式解析及生成xml文件

    XStream解析xml 转换成对象案例

    XStream会自动处理这个映射过程,无需编写复杂的DOM或SAX解析代码。 下面是一个简单的Java类示例,用于表示XML文档中的一个“Person”实体: ```java public class Person { private String name; private int ...

    XStream XML解析

    **XStream XML解析** XStream 是一个开源的 Java 库,它提供了一种简单而有效的方式来将 Java 对象序列化为 XML 和从 XML 反序列化回 Java 对象。这个库的强大之处在于其简洁的API和对复杂Java对象模型的处理能力。...

    xstream解析xml

    在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用在各种系统间的数据...实际应用中,开发者可以根据这些知识对XML数据进行读取、解析和存储,提升开发效率和代码可读性。

    xstream轻松解析xml到java对象

    然而,处理XML数据时,解析和转换为可操作的对象是一个常见挑战。这时,XStream库就派上了用场。XStream是一个Java库,它能将Java对象序列化为XML,同时也能将XML反序列化为Java对象,极大地简化了XML处理过程。 ...

    android 使用XStream解析xml的实例

    android 使用XStream解析xml的实例 android平台上,解析xml文件是一种非常常见的操作。XStream是一个高性能的XML解析库,它可以将xml文件转换成Java对象,从而方便地进行数据处理。本文将介绍如何使用XStream解析...

    Xstream生产xml和解析xml

    XStream支持多种XML解析器,包括XPP3和JAXP DOM,用户可以根据性能和兼容性需求选择合适的解析器。例如,使用XPP3时,可以通过`new XStream(newXppDriver())`创建XStream实例;若使用JAXP DOM,则调用`new XStream...

    xml解析及使用XStream实现javaBean与xml之间的转换

    在`xmlAnalysis`文件夹中,可能包含了一个简单的Java程序,演示了如何使用DOM、SAX、StAX和XStream解析XML文件,并展示了XStream如何在JavaBean与XML之间进行转换。你可以运行这些代码,观察输出结果,以加深理解。...

    使用XStream是实现XML与Java对象的转换(5)--Object Stream

    XStream是一个强大的库,它使得XML与Java对象之间的转换变得简单。在这个主题中,我们将深入探讨如何使用XStream进行XML与Java对象的互换,并了解其工作原理。 首先,XStream是一个开源库,由Johannes Leutenegger...

    java 利用Xstream注解生成和解析xml

    解析XML回Java对象同样简单,只需使用`fromXML()`方法: ```java String xmlInput = "&lt;person id='1'&gt;&lt;firstName&gt;John&lt;/firstName&gt;&lt;lastName&gt;Doe&lt;/lastName&gt;&lt;/person&gt;"; Person parsedPerson = (Person) xstream....

    使用XStream解析MXL文件用到的jar包---xpp3_min-1.1.3.4.O.jar和xstream-1.3.1.jar

    在XStream解析XML文件时,通常需要两个关键的jar包: 1. **xpp3_min-1.1.3.4.O.jar**:这是Minimal XML Pull Parser(XPP3)的轻量级版本,它是一个高效的XML解析器,用于读取XML文档。XPP3被XStream用来解析XML流...

    Xstream生成和解析xml.rar

    本篇文章将详细介绍如何利用Xstream进行XML的生成和解析。 **一、Xstream简介** Xstream是Java社区中的一款开源库,由Johannes Link创建,它的设计目标是使XML序列化和反序列化变得简单直观。Xstream的核心理念是...

    java XStream xml解析 jar包.zip

    - `xmlpull-1.1.3.1.jar`:XML Pull API,它是轻量级的解析XML的库,用于XPP3。 5. **XML Pull Parsing**: - XML Pull Parsing是一种事件驱动的解析模型,与SAX类似,但更简单,不需要解析器的回调函数。XPP3库...

    利用XStream读写xml文件

    - `xpp3-1.1.3.3.jar`:XStream使用XPP3作为其默认的XML解析器。 2. **创建实体对象**:根据XML文件中的数据结构创建对应的实体类。 3. **XML文件写入**: - 创建XStream实例。 - 使用`toXML()`方法将实体对象...

Global site tag (gtag.js) - Google Analytics