如何使用jaxb / moxy管理多个xml格式

时间:2014-03-27 21:39:24

标签: java xml jaxb moxy

我需要对不受我管理的后端执行一些调用。关键是他们使用不同的xml格式来传输数据。即使对于相同的呼叫请求和响应也是不同的:相同的数据但不同的根标签。 起初我尝试使用注释(moxy jaxb)用不同的bean映射它们,但是我必须管理它们中的许多并且改变成本太高。然后我切换到xml文件映射:它似乎比以前的选择更好,但我仍然需要管理大量的xml文件(douzen)。 您是否有任何建议以保持项目的轻量级和可扩展性?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

我们在EclipseLink JAXB(MOXy)中添加外部映射文档的原因之一是允许您将其他XML表示应用于对象模型:

要注意的一件事是根xml-mapping-metadata-complete元素上的xml-bindings属性。当此设置为true时,XML文档将替换所有其他映射,当它为false或不存在时,它会修改元数据。

<?xml version="1.0"?>
<xml-bindings
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    package-name="blog.weather"
    xml-mapping-metadata-complete="true">

使用修改元数据方法,您可以传入多个绑定文件以创建Context,其中后续映射文件可用于逐步调整元数据。

    Map<String, Object> properties = new HashMap<String, Object>(1);
    List<String> bindingFiles = new ArrayList<String>(2);
    bindingFiles.add("version2.xml");
    bindingFiles.add("version3.xml");
    properties.put(JAXBContextFactory.ECLIPSELINK_OXM_XML_KEY, bindingFiles);
    JAXBContext jc = JAXBContext.newInstance(new Class[] {WeatherReport.class}, properties);