2016-12-07 3 views
0

У меня возникла проблема с моей реализацией java-классов 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; 
    } 
} 
Смежные вопросы