繁体   English   中英

如何直接调用JAXB XMLAdapter

[英]How to invoke JAXB XMLAdapter directly

当我试图直接解组根对象而不是另一个对象中的字段时,我违反了jaxb的XMLAdapters的限制,因此绕过了@XmlJavaTypeAdapter

我宁愿不包装我的对象,因为这将改变将在我们的数据库中序列化的xml。 听起来有可能直接调用XMLAdapter,在其他地方通过这些答案:

[1] http://www.coderanch.com/t/505457/XML/jaxb-xmladapter-rootElement [2] http://markmail.org/message/etvbyzn3e3idpa7q#query:+page:1+mid:cetzvq37nifr6tk6+ state:results [3] JaxB继承编组抽象类

但我不明白你会怎么做:(

我猜想它会是这样的

AdaptedFoo adaptedFoo = (new MyAdapter()).unmarshall(fooXml)

但这不是XMLAdapter unmarshal方法的接口。 在我的情况下,xml需要转换为AdaptedFoo对象才能被解组。

eg.  public BackgroundJob unmarshal(AdaptedFoo adaptedFoo)

我是否需要一个额外的解组步骤来将myXml转换为AdaptedFoo对象,然后调用我的XMLAdapter将其转换为预期的子类? 还是有更优雅的方式?

什么是推荐的过程?

对于根对象,您需要执行以下操作:

XmlAdapter<AdaptedFoo, Foo> xmlAdapter = new FooAdapter();
AdaptedFoo adaptedFoo = (AdaptedFoo) unmarshaller.unmarshal(xml);
Foo foo = xmlAdapter.unmarshal(adaptedFoo);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM