当前位置:首页 > 后端 > java > 正文内容

XStream 用法详解 XML 转换为 java 实体类

内容图文

XStream 用法详解 java 类与 XML 互换

现在 WEB数据交换的时代,传送XML目前是一个比较流行的方式,具有统一的规则约束,为实现后台接口提供了一个很方便的实现。

我编写了一个 接收XML并转换成所需要的Object类的 小例子,希望能够对做互联网数据传输、接口调用的朋友有所帮助。

首先要导入jar包xstream-1.4.3-sources.jar 和 xmlpull-1.1.3.1.jar 两个包;

其次是预备一个 XML 事例

<config>
<span style="white-space:pre">	</span><client type="8888" osversion="9999" version="123" oemtag="5555" area="areacode"/>
<span style="white-space:pre">	</span><protocol>1.10</protocol>
<span style="white-space:pre">	</span><sign value="asdfasdf"/>
<span style="white-space:pre">	</span><vientiance version="version"/>
</config>

其次 就是 按照 XML节点的顺序 从外 到内 编写 java PO类,此实例的目的是将上面的XML转换为 AllnewstateRQ 这个实体类,然后从里面打印出测试数据。

下面依次是  config节点 对应的 AllnewstateRQ类 ; client 节点 对应的 Client 类;sign 节点对应的 Sign类;vientiance 节点 对应的 Vientiance类。

package com.wgq.test09_xml;
import com.thoughtworks.xstream.annotations.XStreamAlias;
@XStreamAlias("config")
public class AllnewstateRQ {
	//当节点下有独立属性的时候,需要创建一个独立的类用来保存节点内的属性
	private Client client = new Client();
	private Sign sign = new Sign();
	private Vientiance vientiance = new Vientiance();
	//当节点下没有属性,直接由stringValue的时候可直接创建String类型属性
	private String protocol;
	public Client getClient() {
		return client;
	}
	public void setClient(Client client) {
		this.client = client;
	}
	public Sign getSign() {
		return sign;
	}
	public void setSign(Sign sign) {
		this.sign = sign;
	}
	public Vientiance getVientiance() {
		return vientiance;
	}
	public void setVientiance(Vientiance vientiance) {
		this.vientiance = vientiance;
	}
	public String getProtocol() {
		return protocol;
	}
	public void setProtocol(String protocol) {
		this.protocol = protocol;
	}
}

package com.wgq.test09_xml;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

@XStreamAlias("client")
public class Client {

	@XStreamAsAttribute	//对属性值进行注解
	private String type;//此时类中的属性名要和xml内的属性名相对应

	@XStreamAsAttribute
	private String osversion;

	@XStreamAsAttribute
	private String version;

	@XStreamAsAttribute
	private String oemtag;

	@XStreamAsAttribute
	private String area;

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getOsversion() {
		return osversion;
	}

	public void setOsversion(String osversion) {
		this.osversion = osversion;
	}

	public String getVersion() {
		return version;
	}

	public void setVersion(String version) {
		this.version = version;
	}

	public String getOemtag() {
		return oemtag;
	}

	public void setOemtag(String oemtag) {
		this.oemtag = oemtag;
	}

	public String getArea() {
		return area;
	}

	public void setArea(String area) {
		this.area = area;
	}

}

package com.wgq.test09_xml;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

@XStreamAlias("sign") //此处要对应节点的名称
public class Sign {
	@XStreamAsAttribute
	private String value;//此处对应节点内属性名称
	public String getValue() {
		return value;
	}
	public void setValue(String value) {
		this.value = value;
	}
}

package com.wgq.test09_xml;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;

@XStreamAlias("vientiance")
public class Vientiance {
	@XStreamAsAttribute
	private String version;
	public String getVersion() {
		return version;
	}
	public void setVersion(String version) {
		this.version = version;
	}
}

测试main方法
package com.wgq.test09_xml;

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

public class TestStream {

	public static void main(String[] args) {
		String reqXml = getXml();
		XStream xs = new XStream(new DomDriver()); 
		xs.processAnnotations(new Class[]{AllnewstateRQ.class,Client.class,Sign.class,Vientiance.class});
		Object obj = xs.fromXML(reqXml);
		AllnewstateRQ allnewstateRQ = (AllnewstateRQ) obj;
		System.out.println(allnewstateRQ.getProtocol());
		System.out.println(allnewstateRQ.getClient().getArea());
		System.out.println(reqXml);

	}
	
	static String getXml(){
		StringBuilder str = new StringBuilder();
		str.append("")
		.append("<config>")
		.append("<client type=\"8888\" osversion=\"9999\" version=\"123\" oemtag=\"5555\"  area=\"areacode\" />")
		.append("<protocol>1.10</protocol>")
		.append("<sign value=\"asdfasdf\" />")
		.append("<vientiance version=\"version\" />")
		.append("</config>")
		;
		return str.toString();
	}

}


输出结果:
1.10
areacode
<config><client type="8888" osversion="9999" version="123" oemtag="5555"  area="areacode" /><protocol>1.10</protocol><sign value="asdfasdf" /><vientiance version="version" /></config>


扫描二维码推送至手机访问。

版权声明:本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:luxd@aliyun.com,感谢支持理解。


本文链接:https://luxd.cc/post/180.html

“XStream 用法详解 XML 转换为 java 实体类” 的相关文章

Java 基础 - 面向对象

Java 基础 - 面向对象

三大特性# 封装利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对象内部的细节,但可以通过对象对外提供的接口来访问该对象。优点:减少耦合: 可以独立地开发、测试...

Tomcat 安装与配置

Tomcat 安装与配置

Tomcat是Apache 软件基金会(Apache Software Foundation)核心项目之一,支持最新的Servlet 和JSP 规范。因为Tomcat 技术先进、性能稳定,而且免费,成为目前比较流行的Web 应用服务器。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,...

使用IntelliJ IDEA开发Java Web HelloWorld

使用IntelliJ IDEA开发Java Web HelloWorld

1. 下载Tomcat首先,下载Apache Tomcat并解压到本地计算机,可存放于任何位置。另外,需要在系统中环境JRE_HOME环境变量,以保证Tomcat可以正常启动,具体配置方式请参考其它教程。2. 创建Java Web项目在IntelliJ IDEA的欢迎主界面中,点击Create Ne...

使用IntelliJ IDEA开发Java HelloWorld

使用IntelliJ IDEA开发Java HelloWorld

1. 创建项目在IntelliJ IDEA的欢迎主界面中,点击Create New Project即可创建新的项目:2. 设置项目类型默认情况下的项目类型是Java,本次的案例目标是HelloWorld,则该选项保持不变即可。右侧可以选择JDK的版本,如果默认已经选中了1.8版,则不需要修改,直接点...

java修饰符

java修饰符

内容导读这篇技术教程文章主要介绍了(整理)java修饰符,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1665字,纯文字阅读大概需要3分钟。内容图文java类修饰符相关 参考自http://blog.chinaunix.net/uid-26434689-id-3403828.htm...