Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何直接调用jaxbxmladapter_Java_Inheritance_Jaxb_Unmarshalling - Fatal编程技术网

Java 如何直接调用jaxbxmladapter

Java 如何直接调用jaxbxmladapter,java,inheritance,jaxb,unmarshalling,Java,Inheritance,Jaxb,Unmarshalling,当我试图直接解组一个根对象,而不是另一个对象中的字段,从而绕过@XmlJavaTypeAdapter时,我与jaxb的XMLAdapters的限制相冲突 我不希望包装我的对象,因为这将更改将在数据库中序列化的xml。听起来可以直接调用XMLAdapter,其他地方的答案如下: [1] [2] [3] 但我不知道你会怎么做:( 我猜会是这样的 AdaptedFoo adaptedFoo = (new MyAdapter()).unmarshall(fooXml) 但这不是XMLAdapter解

当我试图直接解组一个根对象,而不是另一个对象中的字段,从而绕过@XmlJavaTypeAdapter时,我与jaxb的XMLAdapters的限制相冲突

我不希望包装我的对象,因为这将更改将在数据库中序列化的xml。听起来可以直接调用XMLAdapter,其他地方的答案如下:

[1] [2] [3]

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

我猜会是这样的

AdaptedFoo adaptedFoo = (new MyAdapter()).unmarshall(fooXml)
但这不是XMLAdapter解组方法的接口。在我的例子中,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);
XmlAdapter XmlAdapter=newfooadapter();
AdaptedFoo AdaptedFoo=(AdaptedFoo)unmarshaller.unmarshal(xml);
Foo-Foo=xmlAdapter.unmarshal(adaptedFoo);

非常感谢,现在我知道答案了,这看起来很简单。