我有一个嵌套很深的第三方库,它公开了许多POJO。此外,我们拥有使用这些POJO的类结构。我们已经用JAXB注释对类进行注释,以生成XSD并针对该XML验证XML,并将该XML解析回类结构。
我们的代码广泛使用第三方代码,并且该第三方代码需要XML验证和解析过程的一部分。我无法注释其源代码。这本身不是问题,因为JAXB可以很好地处理这些类中的未注释字段。
我现在遇到的唯一问题是列表未按我期望的方式处理。如果我在一个第三方类中有一个List<SomeType> someTypes;
字段,那么JAXB将不会生成包装器,而是必须使用几个“ someTypes”标签,每个标签都表示一个 single 条目。整个列表。
所以不用写
<someTypes>first entry</someTypes>
<someTypes>second entry</someTypes>
我想写
<someTypes>
<someType>first entry</someType>
<someType>second entry</someType>
</someTypes>
通常使用XmlWrapperElement批注实现此行为,但我无权访问源。
默认情况下,在那些无法访问的List字段上,JAXB是否可以使用XmlWrapperElement?我不想使用MOXy并为MOXy的外部配置文件中的每个List字段手动添加注释。
我尝试使用XMLAdapter,但是由于一个类可以具有多个List字段,并且XMLAdapter只允许所有这些字段使用一个XML标签名称,而在所有列表等上也必须相同,因此它无法工作。