XStream 解析xml 转 javaBean 问题
来源:互联网 发布:什么测温软件准确 编辑:程序博客网 时间:2024/05/07 20:08
xstream解析后获取不到属性值的问题解决办法2种:
方法一:属性值在类中指定
xstream.useAttributeFor(ChildNav.class, "name");
xstream.useAttributeFor(ChildNav.class, "url");
方法二,通过方法处理:
/**
*@author
* ChildNav属性值转换器
*/
// public class ChildNavConverter implements Converter {
//
// public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext context) {
// ChildNav childNav = (ChildNav) value;
// writer.addAttribute("name", childNav.getName());
// writer.addAttribute("url", childNav.getUrl());
// }
//
// public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) {
// ChildNav childNav = new ChildNav();
//// city.setName(reader.getValue());
// childNav.setName(reader.getAttribute("name"));
// childNav.setUrl(reader.getAttribute("url"));
// return childNav;
// }
//
// public boolean canConvert(Class clazz) {
// return clazz.equals(ChildNav.class);
// }
//
// }
调用方法: // xstream.registerConverter(new ChildNavConverter());
/*******************************************************************************************************************/
详细代码解析:
XStream xstream = new XStream();
File xml = new File(fileName);
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(xml), "UTF-8"));
//xml文档中节点映射到对应的类
xstream.alias("childNav", ChildNav.class);
xstream.alias("nav", Nav.class);
xstream.alias("permissions", Permissions.class);
//xml 文档属性值与对象属性值的对应。(这里可以映射别名)
xstream.aliasField("name", Nav.class, "name");
xstream.aliasField("name", ChildNav.class, "name");
xstream.aliasField("url", ChildNav.class, "url");
//声明对象中的属性值是xml文档中对应的属性而不是节点(不加这个可能会造成解析后的对象属性的值是null)
xstream.useAttributeFor(ChildNav.class, "name");
xstream.useAttributeFor(ChildNav.class, "url");
xstream.useAttributeFor(Nav.class, "name");
//父节点nav对应Nav类,childNav节点对应ChildNav类,有多个childNav节点,这里需转换到集合中
//没有这句的话会报错误“Caused by: //com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$DuplicateFieldException: //Duplicate field childNav”
xstream.addImplicitCollection(ChildNav.class, "childNav");
//将一个xml转成java对象
Permissions Obj = (Permissions)xstream.fromXML(reader); // deserialize from XML
//对xml的package包进行别名映射
xstream.aliasPackage("my.company", "com.thoughtworks");
XStream提供了Converter,使我们在object<->xml时,能对一些输入输出参数进行类型转换。
默认的情况下,XStream在做转换时,会将整个object转成xml,也会将整个xml转成对象。
对于个别字段或者xml域,可能我们不想做转换,就可以使用omitField 。
xStream.omitField(Person.class, "lastname");
(不会吧Person类里面的属性lastname 解析到xml)
默认情况下,XStream不会自动扫描这种Annotations
stream.processAnnotations(RendezvousMessage.class);(需要加上这句去扫描RendezvousMessage.class里面的注释)
0 0
- XStream 解析xml 转 javaBean 问题
- XStream - Javabean转XML文档
- 用XStream读取XML解析成javabean
- Android 用 XStream 将复杂xml解析为javabean
- 采用xstream实现javabean和xml互转时遇到的问题
- XStream解析xml文件遇到的问题
- xStream 将xml转为javaBean
- XStream(JavaBean转换为xml)
- xStream完美转换XML、JSON /XStream Xml与JavaBean对象的互转经典【转载】
- XML和JavaBean之间的互转---XStream
- 【转】xstream的使用介绍(javabean和xml互转)
- XStream xml与javabean之间的互转
- 解析XML XStream
- 用xstream解析XML
- 使用xstream解析xml
- xml 解析 Xstream
- XStream解析xml文件
- android xstream 解析xml
- 函数式编程入门思想分享
- Javascript学习之路 —— 函数节流与函数去抖
- javascript级联插件
- 第六周项目三IP地址类
- python学习1
- XStream 解析xml 转 javaBean 问题
- 使用nexus搭建Maven私服
- C语言cgi编程入门
- Internet命名规则和地址划分约定
- 自定义View之 onMeasure() view的高度自适应wrap_content view的测量
- MFC对话框最小化到托盘编程实现步骤
- 约瑟夫环算法java
- 第五周项目1(2)
- jquery结合bootstrap的选择框联动