XStream 用法详解 XML 转换为 java 实体类
来源:互联网 发布:php自动加载机制 编辑:程序博客网 时间:2024/04/30 15:21
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内的属性名相对应@XStreamAsAttributeprivate String osversion;@XStreamAsAttributeprivate String version;@XStreamAsAttributeprivate String oemtag;@XStreamAsAttributeprivate 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 {@XStreamAsAttributeprivate 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 {@XStreamAsAttributeprivate 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.10areacode<config><client type="8888" osversion="9999" version="123" oemtag="5555" area="areacode" /><protocol>1.10</protocol><sign value="asdfasdf" /><vientiance version="version" /></config>
感谢 博主德莫罗 的 http://chen-rojer-gmail-com.iteye.com/blog/1435254 范例,
我参考 德莫罗 的写的这个 单元测试,将XML 转换成 指定的Object类的小例子.
1 0
- XStream 用法详解 XML 转换为 java 实体类
- xstream java 转换为xml
- XStream 用法详解 java 类与 XML 互换
- XStream 用法详解 java 类与 XML 互换
- XStream 用法详解 java 类与 XML 互换
- XStream在将类转换为XML
- java 实体类与xml之间的相互转换,利用XStream在Java对象和XML之间相互转换
- XStream(JavaBean转换为xml)
- java类 XStream xml json 转换
- Java XStream把Java对象转换为xml
- Javabean 实体类转换为xml
- xstream解析xml到实体类
- 使用XStream处理Xml文档和实体类之间的转换的几种方式
- 利用XStream实现实体对象和xml文件相互转换
- Xstream-xml和实体对象相互转换特殊问题
- Java对象转换XML文件:XStream+XPP
- XStream转换Java对象与XML
- XStream转换java对象与XML
- Activity
- In order to understandC++
- DB2数据库基础总结
- mysql 开启远程登录
- UML静态模型图
- XStream 用法详解 XML 转换为 java 实体类
- Just like normal variables,
- dataGridView 新增自动排序
- In all of the functions
- Java String Buffer
- python移植到arm
- VMware虚拟机优化10种技巧
- static member variables
- 给定0到4的随机数的方法,产生0到6的随机数的方法