我需要映射一些我无法改变的遗留XML。有几个元素具有数百个属性与其他元素完全相同。所有属性都具有后缀为数字的相同名称。所以XML可能如下所示:
<someElement custom1="..." custom2="..." custom78=".."/>
<anotherElmenent custom1="..." custom45="..."/>
&#34;工作的解决方案&#34;是这样创建一个基类:
@XmlAccessorType(FIELD)
public class LotsaCustomIds
{
@XmlAttribute
private String custom1;
@XmlAttribute
private String custom2;
...
}
@XmlType
public class SomeElement extends LotsaCustomIds
{
....
}
但在这里使用继承权是一种耻辱,特别是因为Java只具有单一的继承性。我想做的就像JPA / Hibernate嵌入对象的方式,如:
@XmlType
public class SomeElement
{
@EmbeddedAttributes
private LotsaCustomIds customIds;
....
}
无论如何要做到这一点?
答案 0 :(得分:1)
注意:我是EclipseLink JAXB (MOXy)领导。
您可以使用MOXy的@XmlPath
扩展名来映射此用例。当您将其用作@XmlPath(".")
时,它会将子对象(LotsaCustomIds
)的内容拉入父对象(SomeElement
)。
@XmlType
public class SomeElement
{
@XmlPath(".")
private LotsaCustomIds customIds;
....
}
我的博客中的相关信息