JAXB类中的嵌入属性

时间:2014-03-24 21:51:15

标签: java jaxb

我需要映射一些我无法改变的遗留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;
        ....
}

无论如何要做到这一点?

1 个答案:

答案 0 :(得分:1)

注意:我是EclipseLink JAXB (MOXy)领导。

您可以使用MOXy的@XmlPath扩展名来映射此用例。当您将其用作@XmlPath(".")时,它会将子对象(LotsaCustomIds)的内容拉入父对象(SomeElement)。

@XmlType
public class SomeElement
{
    @XmlPath(".")
    private LotsaCustomIds customIds;
        ....
}

我的博客中的相关信息