JAXB实现XML与JAVA对象之间的转换(二)

Java 天涯孤鸟 906℃ 0评论

在上一篇已经介绍了JAXB实现XML与JAVA对象之间的互转,但是在通常情况下,报文并没有想象中那么简单,有些会有一些特殊的格式要求,那么这时候简单的注解就不能满足需求。于是JAXB提供了这样一个注解@XmlJavaTypeAdapter,可以实现自定义的适配器。接来下介绍一些如何使用这个自定义的的适配器。
假如有这么一段报文:

那么要怎样定义Java对象跟它映射呢?
第一时间想到的就是定义这样一个类:

可以看下生成的报文:

可以看到运行结果生成的报文跟我们想要的不一致:

那么这时候就只能通过实现自定义的适配器来满足这种格式需求:
定义MapAdapterEntryType 类作为Map<String,Object>的key和value映射:

自定义一个适配器MapAdapter 继承XmlAdapter,实现unmarshal和marshal

然后再定义一个映射Map的元素:

接下来在看一下如何映射Java对象,使用@XmlJavaTypeAdapter(MapAdapter.class)来映射自定义适配器

重新运行下main方法,可以看到已经生成我们想要的报文格式了。

转载请注明:猫头鹰工作室 » JAXB实现XML与JAVA对象之间的转换(二)

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址