使用XStream转换xml
发布时间:2020-12-15 22:39:45 所属栏目:百科 来源:网络整理
导读:java 利用Xstream生成和解析xml,知识结构: 1.Xstream简介; 使用限制 : JDK版本不能1.5. 虽然预处理注解是安全的,但自动侦查注解可能发生竞争条件. 特点: 简化的API; 无映射文件; 高性能,低内存占用; 整洁的XML; 不需要修改对象;支持内部私有字段,不需要set
java 利用Xstream生成和解析xml,知识结构: 使用限制: JDK版本不能<1.5. 特点: 使用场景Transport 转换 maven依赖: <dependency> <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream</artifactId> <version>1.4.3</version> </dependency> 隐式集合 当我们使用集合类时不想显示集合,只显示里面的元素即可. 使用隐式集合前:
<list> <element /> <element /> <list> 使用隐式集合: xstream.addImplicitCollection(Person.class,"list"); 使用隐式集合后: <element /> <element /> 2.Xstream注解常用知识: @XStreamAlias("message") 别名注解 作用目标: 类,字段 @XStreamImplicit 隐式集合 @XStreamImplicit(itemFieldName="part") 作用目标: 集合字段 @XStreamConverter(SingleValueCalendarConverter.class) 注入转换器 作用目标: 对象 @XStreamAsAttribute 转换成属性 作用目标: 字段 @XStreamOmitField 忽略字段 作用目标: 字段 Auto-detect Annotations 自动侦查注解 xstream.autodetectAnnotations(true); 自动侦查注解与XStream.processAnnotations(Class[] cls)的区别在于性能.自动侦查注解将缓存所有类的类型. 3.案例分析: (1)同一标签下多个同名元素; (2)同一标签下循环多个对象;
/** * 将传入xml文本转换成Java对象,添加转换器 * @param xmlStr * @param cls * @param converter * @param <T> * @return */ public static <T> T toBean(String xmlStr,Class<T> cls,Converter converter){ //注意:不是new Xstream(); 否则报错:java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserFactory XStream xstream=new XStream(new DomDriver()); xstream.registerConverter(converter); // XStream xstream = new XStream( // new DomDriver("UTF-8",new XmlFriendlyNameCoder("-_","_"))); xstream.processAnnotations(cls); T obj=(T)xstream.fromXML(xmlStr); return obj; } 详细见:
http://www.oschina.net/code/snippet_116183_14202
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |