SO上有两个类似的问题:
How to ignore some tags in XML in Jaxb
JAXB ignoring xml tag attribute
但不幸的是,他们没有解决我的问题。我正在寻找方法如何使用纯JAXB
注释而不使用moxy
跳过XML中的某些标记。
@XmlElementWrapper
注释仅适用于collecitons。就我而言,有类似的东西:
<A>
<skipThisWrapper>
<someInternalComplexStructure>
<B>...</B>
<C>...</C>
</someInternalComplexStructure>
</skipThisWrapper>
</A>
它应该映射到类结构:
class A {
// @XmlElementWrapper(name="skipThisWrapper") - it doesn't work for non-collection fields!
@XmlElement(name='someInternalComplexStructure')
ComplexStructure complexStructure;
}
是的,我无法将complexStructure
转换为集合,因为这个结构是从一些遗留的基本类继承的。
答案 0 :(得分:0)
您需要编写一个XmlAdapter,它将包含skipThisWrapper元素的A类对象转换为包含someInternalComplexStructure的B类对象。这只需要你通过重用someInternalComplexStructure类和一个双向非常简单转换的适配器来编写B类。
如果你有手写的Java类,那很简单,但我不会发明任何代码。您可以在最新的SO Q&amp; As标记的jaxb(Avoid Empty Sub-Tags in XML if everything is blank in an object或JAXB can not handle XML element containing white space to java.net.URI mapping)中找到适配器的示例。如果您需要帮助,请在您的Q上添加一些Java代码,然后可以安装适配器。