Java 使用JAXB2.0忽略XML中的一些包装器标记
关于这一点,有两个类似的问题: 但不幸的是,他们没有解决我的问题。我正在寻找一种方法,如何使用纯Java 使用JAXB2.0忽略XML中的一些包装器标记,java,xml,jaxb,Java,Xml,Jaxb,关于这一点,有两个类似的问题: 但不幸的是,他们没有解决我的问题。我正在寻找一种方法,如何使用纯JAXBannotations跳过XML中的一些标记,而不使用moxy @xmlementwrapper注释仅适用于collecitons。在我的例子中,有这样的情况: <A> <skipThisWrapper> <someInternalComplexStructure> <B>...</B>
JAXB
annotations跳过XML中的一些标记,而不使用moxy
@xmlementwrapper
注释仅适用于collecitons。在我的例子中,有这样的情况:
<A>
<skipThisWrapper>
<someInternalComplexStructure>
<B>...</B>
<C>...</C>
</someInternalComplexStructure>
</skipThisWrapper>
</A>
是的,我不能将
complexStructure
转换为collection,因为该结构是从一些遗留的基本类继承而来的。您需要编写一个XmlAdapter,将包含skipThisWrapper元素的a类对象转换为包含someInternalComplexStructure的B类对象。这仅仅要求您通过为某些InternalComplexStructure重用类和一个适配器来编写类B,并在两个方向上进行非常简单的转换
如果您有手工编写的Java类,那么它非常简单,但我不想发明任何代码。您可以在最近的SO Q&As标记的jaxb(or)中找到适配器的示例。如果需要帮助,请在Q中添加一些Java代码,以便安装适配器。您需要编写一个XmlAdapter,将包含skipThisWrapper元素的a类对象转换为包含someInternalComplexStructure的B类对象。这仅仅要求您通过为某些InternalComplexStructure重用类和一个适配器来编写类B,并在两个方向上进行非常简单的转换
如果您有手工编写的Java类,那么它非常简单,但我不想发明任何代码。您可以在最近的SO Q&As标记的jaxb(or)中找到适配器的示例。如果您需要帮助,请向Q中添加一些Java代码,以便安装适配器。在这种情况下,在setter和getter中创建自己的复杂逻辑会容易得多:使用
skipthiswapper
结构创建内部类,并使用内部元素值设置parrent字段。在这里,我看不到使用XmlAdapter
的任何好处。此外,在我提到的问题中,我正在寻找做这些事情的纯注释方法。无论如何,感谢您的回答。在这种情况下,在setter和getter内部创建自己的复杂逻辑会容易得多:使用skipthiswapper
结构创建内部类,并使用内部元素值设置parrent字段。在这里,我看不到使用XmlAdapter
的任何好处。此外,在我提到的问题中,我正在寻找做这些事情的纯注释方法。无论如何,谢谢你的回答。
class A {
// @XmlElementWrapper(name="skipThisWrapper") - it doesn't work for non-collection fields!
@XmlElement(name='someInternalComplexStructure')
ComplexStructure complexStructure;
}