XStream 学习和使用
1、XStream 简介
一个 XML 的序列化工具,可以实现 Java 对象序列化成 XML,或者将 XML 反序列为 Java 对象。
2、Maven 依赖
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.19</version>
</dependency>
3、XStream 的常用注解
| 注解 | 说明 | 作用目标 |
|---|---|---|
| @XStreamAlias | 别名,作为xml标签名 | 对象、字段 |
| @XStreamAsAttribute | 转为标签的属性 | 字段 |
| @XStreamOmitField | 将对象转为xml时,忽略该字段 | 字段 |
| @XstreamImplicit | 隐式集合 | 集合字段 |
| @XstreamConverter(ToAttributeValueConverter.class) | 注入转换器, 所有字段设成标签属性 | 对象 |
Eg,
<module id="0" name="name1" order="1">
<item id="1" name=""/>
<item id="2" name=""/>
<item id="3" name=""/>
</module>
demo:
@XStreamAlias("module") // 别名,作为xml标签名字
public class ModuleVo {
@XStreamAsAttribute // 字段成为标签内属性
@XStreamAlas("id")
private String moduleid;
@XStreamAsAttribute
private String name;
@XStreamAsAttribute
private String order;
@XStreamImplicit(itemFieldName = "item") // 集合,ItemRegVo类似于ModuleVo这种,里面可以定义自己的属性
private List<ItemRegVo> itemRegVoList;
}
public void static main(String[] args){
DomDriver driver = new DomDriver();
XStream xStream = new XStream(driver);
xStream.autodetectAnnotations(true);
Class<?>[] classArray = getClassArray(packagePath);
XStream xstream = createXstream();
XStreamxstream.processAnnotations(classArray)
xstream.allowTypes(cassArray);
Object obj = xstream.fromXML(outputStream); // xml转JavaBean
xstream.toXML(o, filePath); // JavaBean转XML
}
/**
* 扫描指定包下的所有类,返回class数组
*/
private static Class<?>[] getClassArray(String packagePaths) {
Set<Class<?>>totalSet = new HashSet<>();
Set<String> paths = new HashSet<>();
paths.add(packagePaths);
for (String packagePath : paths) {
totalSet.addAll(CTassScanner.scanPackage(packagePath));
}
return totalSet.toArray(new Class[o])
}


浙公网安备 33010602011771号