gpt4 book ai didi

java - 如何直接调用 JAXB XMLAdapter

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:05:03 26 4
gpt4 key购买 nike

当我试图直接解码一个根对象时,我遇到了 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 inheritance marshalling abstract classes

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

我猜应该是这样的

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

但这不是 XMLAdapter 解码方法的接口(interface)。在我的例子中,需要先将 xml 转换为 AdaptedFoo 对象,然后才能对其进行解码。

eg.  public BackgroundJob unmarshal(AdaptedFoo adaptedFoo)

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

推荐流程是怎样的?

最佳答案

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

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

关于java - 如何直接调用 JAXB XMLAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23090905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com