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