2016-12-07 63 views
0

我正面临着我的Jaxb java类的实现问题。我的XML响应应该是这样的:Jaxb,避免重复的XML标记

<rootElement attr1="value1" attr2="value2"> 
     <child> childValue </child> 
</rootElement> 

这是我的java类:

@XmlRootElement 
public class RootElement { 
    private String attr1; 
    private String attr2; 
    private Child child; 

    @XmlAttribute 
    public String getAttr1() { 
     return attr1; 
    } 

    public void setAttr1(String attr1) { 
     this.attr1 = attr1; 
    } 

    @XmlAttribute 
    public String getAttr2() { 
     return attr2; 
    } 

    public void setAttr2(String attr2) { 
     this.attr2 = attr2; 
    } 

    public void setChild(Child c) { 
     child = c; 
    } 

    @XmlElement 
    public Token getChild() { 
     return child; 
    } 
} 

,这是儿童:

public class Child { 

    private String child; 

    public Child() { 

    } 

    public void setChild(String child) { 
     this.child = child; 
    } 

    public String getChild() { 
     return child; 
    } 

} 

我得到这个XML:

<rootElement attr1="value1" attr2="value2"> 
     <child><child>childValue</child></child> 
</rootElement> 

怎么了?

回答

1

第一个<child>生产child变量RootElement类。
第二个<child>是生产child变量的儿童类。

如果你能确保有在儿童类只有一个映射,您可以添加到@XmlAnyElement变量child。 JAXP将不会生成第二个<child>元素。

public class Child { 

    @XmlAnyElement 
    private String child; 

    public Child() { 
    } 

    public void setChild(String child) { 
     this.child = child; 
    } 
    public String getChild() { 
     return child; 
    } 
}