XStrean的理解

xiaoxiao2021-02-28  48

学习Xstrean网上资料很少,到处都找不到相关文档,以下文章供大家参考

通过Xstrean的方式可以把xml格式的数据转换成java对象(序列化),也可以把对象转换成xml(反序列化),转json,List,等等方式

首先需要倒入相关jar包

1.创建modile对象

package com.yirong; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamOmitField; @XStreamAlias("modile") public class Modile { @XStreamAsAttribute // 指定这个变量是属性 @XStreamAlias("id") // 属性名为id private String id; private String mobile; private String type; @XStreamOmitField //表示当前属性不会被序列化到xml中 private String code; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } public String getType() { return type; } public void setType(String type) { this.type = type; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } @Override public String toString() { return "Modile [mobile=" + mobile + ", type=" + type + ", code=" + code + "]"; } }

2.创建Company对象

package com.yirong; import java.util.List; import com.thoughtworks.xstream.annotations.XStreamAlias; @XStreamAlias("company") public class Company { private String name; private String code; @XStreamAlias("modiles") //如果这里不指定,就以list变量的名称当做节点 private List<Modile> mobileInfos; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public List<Modile> getMobileInfos() { return mobileInfos; } public void setMobileInfos(List<Modile> mobileInfos) { this.mobileInfos = mobileInfos; } @Override public String toString() { return "Company [name=" + name + ", code=" + code + ", mobileInfos=" + mobileInfos + "]"; } }

3.创建XStrean的测试类

package com.yirong; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.ArrayList; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver; import com.thoughtworks.xstream.io.xml.DomDriver; public class TestXStream { //初始化对象 private static Modile mobile = new Modile(); //初始化对象 private static Company company = new Company(); public static void main(String[] args) { mobile.setId("1001"); mobile.setMobile("13400000000"); mobile.setType("1"); mobile.setCode("87365902"); Modile mobile2 = new Modile(); mobile2.setId("1002"); mobile2.setMobile("13400000001"); mobile2.setType("2"); mobile2.setCode("6955413"); ArrayList<Modile> mobileInfoList = new ArrayList<Modile>(); mobileInfoList.add(mobile); mobileInfoList.add(mobile2); company.setCode("JT1001"); company.setName("X集团"); company.setMobileInfos(mobileInfoList); //初始化 XStream xStream = new XStream(new DomDriver()); //自动侦查注解 xStream.autodetectAnnotations(true); //类重命名 // xStream.alias("modile", Modile.class); // xStream.alias("company", Company.class); // // xStream.aliasField("haha", Company.class, "mobileInfos"); String xml = xStream.toXML(company); //转为xml格式的内容 System.out.println(xml); Company company2 = (Company) xStream.fromXML(xml); //把xml内容转为java对象 System.out.println(company2); writeToXml(xml); xmlTojson(); } /** * xml到json的序列化与反序列化 */ public static void xmlTojson() { XStream xstream = new XStream(new JettisonMappedXmlDriver());//设置Json解析器 xstream.setMode(XStream.NO_REFERENCES);//设置reference模型,不引用 xstream.alias("人",Modile.class);//为类名节点重命名 //Json序列化 String json = xstream.toXML(company); System.out.println("json格式:"+json); //Json反序列化 company = (Company) xstream.fromXML(json); System.out.println(company); } public static void writeToXml(String xml){ //写入数据 try { OutputStreamWriter outw = new OutputStreamWriter(new FileOutputStream(new File("book.xml"))); try { outw.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"); outw.write(xml); outw.close(); } catch (IOException e) { } } catch (FileNotFoundException e1) { e1.printStackTrace(); } } }
转载请注明原文地址: https://www.6miu.com/read-2631530.html

最新回复(0)