如何直接调用JAXB XMLAdapter

当我试图直接解组根对象而不是另一个对象中的字段时,我违反了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] JaxBinheritance编组抽象类

但我不知道你会怎么做:(

我猜它会是这样的

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

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

 eg. public BackgroundJob unmarshal(AdaptedFoo adaptedFoo) 

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

什么是推荐的过程?

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

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