使用jaxb的所有java类实例的单元素名称映射

时间:2013-11-08 10:08:23

标签: java jaxb

我有一个名为A的类,它在其他一些类中使用,例如B,C在不同的变量名中,

@XmlRootElement(name="global")
public class A{    
}

@XmlRootElement
public class B{
    @XmlElement
    private A first;
}

@XmlRootElement
public class C{
    @XmlElement
    private A second;
}

现在,当我在B组训练时,我得到了像

这样的A元素
<b:first>...........</b:first>

当我训练C级时,我得到了像

这样的A元素
<c:second>...........</c:second>

但是我希望在任何一个类别中都能得到A级所有出现的“glabal”这个名字。我知道我可以在B和C中使用@XmlElement(name="global")。但我不想在@XmlElement字段中使用任何参数,如名称,名称空间。 我怎样才能注释类A,以便每当任何其他类声明A的实例时,每次它将被编组为<b:global></b:global><c:global><c:global>

1 个答案:

答案 0 :(得分:1)

如果目标类使用@XmlRootElement进行注释,那么您可以使用@XmlElement代替@XmlElementRef而不是@XmlElement。通过这种方式,您可以定义一次元素信息。由于元素信息定义一次,它将有一个与之关联的名称空间URI。如果您希望命名空间信息不同,则需要使用{{1}}。