不规矩的xml与JAVA对象互相转换的小技巧-使用Marshaller
发布时间:2020-12-16 05:50:51 所属栏目:百科 来源:网络整理
导读:摘要:将XML文档与JAVA对象互转是很常见的需求,如果XML定义很规整这很好实现。然而在现实中“不规矩”的XML可能更常见, Marshaller 便无能为力了吗? 下面是一个小技巧, 调整一下思维便能重用 Marshaller 了,征服它们使工作更简单 。 关键词: Marshalle
摘要:将XML文档与JAVA对象互转是很常见的需求,如果XML定义很规整这很好实现。然而在现实中“不规矩”的XML可能更常见,
Marshaller
便无能为力了吗?
下面是一个小技巧,
调整一下思维便能重用
Marshaller
了,征服它们使工作更简单
。
关键词:
Marshaller,JAVA,XML
将一个类生成一个Json字符串、将一个Json字符串翻译成一个类(JAVA、C#代码),这一过程已经在“”博客中描述了;在实际项目应用中,如何将一个类生成一个XML文档或XML字符串,如何将一个XML文档翻译成一个类,这又是经常遇到的问题。比如,跟其它系统的交互中,其它系统定义的接口参数以XML格式定义,那么你写的系统就要解析并理解它传入的数据,或者把自己内部的数据转成按它规定的XML格式文档传出。在JAVA里,这一过程还蛮简单,使用
Marshaller
便可以很轻松的解决。
然而,有一些“不守规矩”的XML格式可能被其它系统定义了,它们定义的XML格式恰恰不是
Marshaller天生
有能力生成与解析的,我们对这种“不规矩"的XML就无计可施了吗?其实
Marshaller
还是很好用的,后来你
会发现
Marshaller
的极限便不复存在。下面,我以一个简单的例子来证明我的这一观点,对于“不规矩”的XML我也是有办法将其制服的。
一、XML帮助类
首先,你得有一个XML帮助类,它提供的是最基础的,使用
Marshaller
使XML和JAVA对象互转,这对于规矩的XML文档们,便能以一挡百了。
?这对于这样规矩的:XML,就要定义这样的:JAVA类,一一对应,什么事情都能解决。
二、将 自定义数据对象 与 XML(不规矩的)字符串 互转
现在我们有一个需求,
把我们系统的JAVA对象转成按其它系统规定的XML格式文档传出
,其它系统给了我们一份XML格式文档,希望我们能正确构造它;
我写的系统要解析并理解其它系统传入的XML数据,同样的其它系统给了我们一份XML格式文档,希望我们能顺利解释它。
看看我们是怎么做的吧。
XML格式:
三、遇到的问题及改进方法
1、在使用
Marshaller
的
过程中,出现了一点问题:生成XML时,并不按照配置的
@XmlType(propOrder =
{
"1"
,
"2"
})
的顺序,而是恰好相反的,这个问题目前还没有解决,唯一在网上查到的相关信息是说JAVA版本为6以下的会有这个BUG,但是我的JAVA版本为1.7,也出现了这个问题,望有知道解决方法的同学告知一下,
请不吝赐教
。
2、对于不规矩的XML格式,更好的办法是使用Marshaller所支持的自定义解析器,上面的不规矩XML完全可以映射到Map对象上面去。这种方法更能支持更不规则的XML定义。网上不知有无已经实现的代码,知道的同学,请不吝赐教。 最近项目工作量很大,每天都能学习到很多东西,项目管理的、JAVA使用的、界面规范的......不胜枚举,毕竟是第一次自己负责的项目,经验和教训肯定的巨大的。 作为一个项目经理,对作品、对自己的团队都觉得立马有了深深的责任感,也有了很大的压力,感谢组织的信任与支持,感谢团队的鼎力协作,感谢相关部门的大力配合,感谢姚老师的无私帮助,也感谢老婆默默的支持。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ios – SceneKit中的COLLADA转换
- [快速学会Swift第三方库] Eureka篇
- objective-c – 从UIPanGestureRecognizer获取原始触摸位置
- Oracle数据库:实例、用户、表、表空间
- ruby-on-rails – Sidekiq进程无声地死亡
- c# – AutoMapper – 如何使用ConstructedBy方法将参数传递
- c# – VS2010项目之间的汇编引用失败
- xcode – 我还需要一个Entitlements.plist文件进行临时构建
- WPF:更新依赖属性而不使用INotifyPropertyChanged(UserCon
- SQLite3使用方法大全(三)之日期&时间