博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XString在xml和Object之间来回转换时xml头声明问题
阅读量:7190 次
发布时间:2019-06-29

本文共 1487 字,大约阅读时间需要 4 分钟。

hot3.png

 

 

想到Object和XML之间来回搞,我同大多数人一样,想到了XStream,JAXB,XMLBeans 。懒得去折腾,直接上手XStream.

不得不说XStream还是很强大的,但是有一个问题,我查了好两三个小时才搞定,也每个好的博客给寡人讲讲。

上代码,先列出实体类,姑且叫订单类吧,set/get方法不赘述。

public class Order {	private String logisticsId ;//订单号	private String cpCode;//公司编号	private String orderCreateTime;//订单创建时间	private String orderBizType;//订单业务类型…………

然后我就大大方方的Object2XML了。

XStream xStream = new XStream(); String params =xStream.toXML(order);

 然而,xml确实是没问题呢,但是xml的头声明把我的包名都带出来了,这个不是我想要的,人家给出的标准格式是<request>……</request>

ET61465890105002
ET6
2016-05-20 1:10:10
1

于是我看到了一丝希望

xStream.alias("request",Order.class);

文档上说这个可以更换xml的头声明,然而,也是好用的。

ET61465890105002
ET6
2016-05-20 1:10:10
1

这个问题解决,也就花了两分钟,但是下面这个问题才是重点。

当对象发过来xml,同样也是已<request>……</request>为xml头声明的,我转对象的时候空指针了,报错的大体意思就是找不到“request”这个类。

于是我在网上查到了标注这个玩意。

@XStreamAlias("request")public class Order {	private String logisticsId ;//订单号	private String cpCode;//公司编号	private String orderCreateTime;//订单创建时间	private String orderBizType;//订单业务类型…………

然后我以为他会跟Spring一样,然后并不是,他的转换结果还是空指针。在想方设法String.replace()还有别的尝试之后,终于找到了这句话。

//提醒xStream扫描指定类底下的标注,默认情况下不会扫描 xStream.processAnnotations(Order.class);

就这一句话,解决了我的问题。

然后我在Object2XML的时候将xStream.alias("request",Order.class);这句话注释掉,加上上面一行代码生出来的XML也是没问题的。

纵观网上那么多XStream的博客,又是对象跟XML互转,又是JSON跟xml互转,又是遍历list的,却没有写出这句话的。

 

 

 

 

 

转载于:https://my.oschina.net/ytliyang/blog/691282

你可能感兴趣的文章
uoj#213. 【UNR #1】争夺圣杯(单调栈)
查看>>
Unity4.5版本DLL库名字问题
查看>>
打造一个集Java,C/C++,Python开发与一体的eclipse neon.3-32bit
查看>>
C#进阶之路(六):表达式进行类的赋值
查看>>
SQL夯实基础(八):联接运算符算法归类
查看>>
如何使用JMeter来实现更大批量的并发的解决方案(即如何设置controller和Agent)
查看>>
第七天
查看>>
poj2823
查看>>
Linux 必会
查看>>
HTML骨架结构
查看>>
【哈希表】CodeVs1230元素查找
查看>>
自定义上传图片样式并实现上传立即展示该图片
查看>>
通达OA 自定义菜单
查看>>
Excutors 线程池
查看>>
BootStrap的table技术小结:数据填充、分页、列宽可拖动
查看>>
用HTML做的简单的个人简历
查看>>
MySQL高级 之 order by、group by 优化
查看>>
POJ3320:Jessica's Reading Problem(尺取法)
查看>>
Mysql学习——安装登录
查看>>
React-nwb的使用
查看>>