Xstream常用注解:
@XStreamAlias("message") :
别名注解
作用目标: 类,字段
@XStreamImplicit
隐式集合
@XStreamImplicit(itemFieldName="subElementName")
作用目标:
集合字段
@XStreamConverter(SingleValueCalendarConverter.class)
注入转换器
作用目标: 对象
@XStreamAsAttribute 转换成属性
作用目标: 字段
@XStreamOmitField 忽略字段
作用目标: 字段
隐式集合:
当我们使用集合类时不想显示集合,只显示里面的元素即可.
使用隐式集合前:
<list>
<element />
<element />
<list>
使用隐式集合后:
<element />
<element />
解析XML生成java bean代码示例:
xml如下:
<?xml version="1.0" encoding="UTF-8"?> <family> <phone>1234</phone> <address>shan'xi xi'an</address> <sports>football,basketball</sports> <members> <member role="father"> <name>john</name> <age>42</age> <gender>man</gender> </member> <member role="mother"> <name>lili</name> <age>40</age> <gender>women</gender> </member> <member role="son"> <name>west</name> <age>5</age> <gender>man</gender> </member> </members> </family>
定义Family模型.
注:Family模型中sports属性为List<String>,即从xml读取的”football,basketball“要转化为List
所以自定义一个SportsConverter,并在sports属性上面增加注解
@XStreamConverter(SportsConverter.class)
/** * */ package xStream; import java.io.Serializable; import java.util.List; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamConverter; /** * @author Administrator * */ @XStreamAlias("family") public class Family implements Serializable { /** * */ private static final long serialVersionUID = 2666558275262597117L; @XStreamAlias("phone") private String telephone; private List<Person> members; private String address; @XStreamConverter(SportsConverter.class) private List<String> sports; public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public List<Person> getMembers() { return members; } public void setMembers(List<Person> members) { this.members = members; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public List<String> getSports() { return sports; } public void setSports(List<String> sports) { this.sports = sports; } @Override public String toString() { return "Family [address=" + address + ", members=" + members + ", sports=" + sports + ", telephone=" + telephone + "]"; } }
package xStream; import java.io.Serializable; import com.thoughtworks.xstream.annotations.XStreamAlias; import com.thoughtworks.xstream.annotations.XStreamAsAttribute; import com.thoughtworks.xstream.annotations.XStreamConverter; import com.thoughtworks.xstream.converters.extended.ToStringConverter; @XStreamAlias("member") public class Person implements Serializable { /** * */ private static final long serialVersionUID = -7139978490881468546L; @XStreamAsAttribute private String role; private String name; private String gender; private String age; public String getRole() { return role; } public void setRole(String role) { this.role = role; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "Person [age=" + age + ", gender=" + gender + ", name=" + name + ", role=" + role + "]"; } }
自定义一个SportsConverter.java实现将String转化为List<String>
/** * */ package xStream; import java.util.ArrayList; import java.util.List; import com.thoughtworks.xstream.converters.Converter; import com.thoughtworks.xstream.converters.MarshallingContext; import com.thoughtworks.xstream.converters.UnmarshallingContext; import com.thoughtworks.xstream.io.HierarchicalStreamReader; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; /** * @author Administrator * */ public class SportsConverter implements Converter { /* * (non-Javadoc) * * @see * com.thoughtworks.xstream.converters.Converter#marshal(java.lang.Object, * com.thoughtworks.xstream.io.HierarchicalStreamWriter, * com.thoughtworks.xstream.converters.MarshallingContext) */ @Override public void marshal(Object obj, HierarchicalStreamWriter hierarchicalstreamwriter, MarshallingContext marshallingcontext) { // TODO Auto-generated method stub } /* * (non-Javadoc) * * @see * com.thoughtworks.xstream.converters.Converter#unmarshal(com.thoughtworks * .xstream.io.HierarchicalStreamReader, * com.thoughtworks.xstream.converters.UnmarshallingContext) */ @Override public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext unmarshallingcontext) { List<String> sportsList = new ArrayList<String>(); try { String sportCollect = reader.getValue(); String[] sports = sportCollect.split(","); if ((null != sports) && (0 != sports.length)) { for (String string : sports) { sportsList.add(string); } } } catch (Exception e) { e.printStackTrace(); } return sportsList; } /* * (non-Javadoc) * * @see * com.thoughtworks.xstream.converters.ConverterMatcher#canConvert(java. * lang.Class) */ @Override public boolean canConvert(Class class1) { return class1.equals(ArrayList.class); } }
/** * */ package xStream; import java.io.File; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.xml.Dom4JDriver; /** * @author Administrator * */ public class XStream2JaveBean { /** * @param args */ public static void main(String[] args) { XStream xStream = new XStream(new Dom4JDriver()); xStream.processAnnotations(Family.class); xStream.processAnnotations(Person.class); Family family = (Family) xStream.fromXML(new File("d:\\NewFile.xml")); System.out.println(family); } }
执行XStream2JaveBean的main函数。结果如下:
Family [address=shan'xi xi'an, members=[Person [age=42, gender=man, name=john, role=father], Person [age=40, gender=women, name=lili, role=mother], Person [age=5, gender=man, name=west, role=son]], sports=[football, basketball], telephone=1234]
成功获取到XML对应的Family java模型。
相关推荐
XStream 反序列化漏洞(CVE-2020-26258 & 26259),修复jar包 xstream-1.4.15.jar Xstream 是 Java 类库,用来将对象序列化成 XML (JSON) 或反序列化为对象。XStream 是一款开源软件,允许在 BSD 许可证的许可下分发...
XStream 用法详解 XML 转换为 java 实体类 所需要的 xstream-1.4.3-sources.jar jar包 具体实现请参考 http://blog.csdn.net/morning99/article/details/28875159
powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-classloading-xstream-1.4.7powermock-class...
xstream-1.4.9实现xml与对象互转,不会用可以找dddddddddddddddddd
xstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包 对象转xmlxstream-1.4.3.jar 包...
xstream-1.4.20.jar
xstream-1.4.19.jar
xml-pull-1.3.1.jar工具类,xstream-1.3.jar,XStream是一个Java对象和XML相互转换的工具,很好很强大。提供了所有的基础类型、数组、集合等类型直接转换的支持。 因此XML常用于数据交换、对象序列化(这种序列化和...
xstream-1.3.1.jar javabean与xml之间的转化,实现转化
XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换。将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件。
修改XStream源码,解决SAE不支持XStream的问题。
xstream-1.4.1.jar XML解析
xstream最新版jar包
xstream-1.4.2.jar,官网上也有,由于本人分没了,希望有分的同志给点分。如果你也每份,请上官网下,地址:http://xstream.codehaus.org/download.html
赠送jar包:xstream-1.4.11.jar; 赠送原API文档:xstream-1.4.11-javadoc.jar; 赠送源代码:xstream-1.4.11-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.11.pom; 包含翻译后的API文档:xstream-1.4.11-...
xstream jar包,java对象转xml以及xml转java对象,操作很简单。
赠送jar包:xstream-1.4.7.jar; 赠送原API文档:xstream-1.4.7-javadoc.jar; 赠送源代码:xstream-1.4.7-sources.jar; 赠送Maven依赖信息文件:xstream-1.4.7.pom; 包含翻译后的API文档:xstream-1.4.7-javadoc-...
xstream轻松解析xml到java对象,内附样例。so easy!妈妈再也不用担心我的xml解析。
一个小demo展示xml的两种解析方式和四种解析方法,以及使用XStream进行javaBean与xml、json之间的转换
将java对象转换成,xml, xstream-1.3.1.jar xstream-1.3.1.jar