Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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 使用JAXB2.0忽略XML中的一些包装器标记_Java_Xml_Jaxb - Fatal编程技术网

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;
}