2016-12-07 64 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; 
    } 
}