2016-08-22 3 views
0

Предположим, я пытаюсь создать XML-документ из объекта. Возможно ли использование аннотаций JAXB в одном классе Food, или мне нужно создать внутренние классы для Cost and Flavor?Сериализация нескольких уровней элементов XML

Я знаю, что я могу использовать @XmlElement или @XmlAttribute для установки непосредственных дочерних элементов моего корневого элемента. Тем не менее, я не уверен, если/как создать теги <cost> и <Flavor>, как я покажу здесь.

<Food> 
    <cost amt=13.5 unit=USD/> 
    <Flavor spicy=5>It tastes good</Flavor> 
</Food> 


@XmlRootElement("Food") 
public class Food { 

    private float amount; 
    private String units; 
    private String flavorType; 
    private STring flavorDescription; 
} 
+0

Я думаю, что вам нужно внутренний класс как для '' cost' и flavor' –

ответ

1

Добавить новый Java-класс Стоимость:

public class Cost 
{ 
    @XmlAttribute 
    double amt; 
    @XmlAttribute 
    String unit; 
} 

И exdend класс еды

@XmlRootElement 
public class Food { 

    private float amount; 
    private String units; 
    private String flavorType; 
    private String flavorDescription; 

    private Cost cost; 
    ... 
0

вы также можете использовать что-то вроде этого для класса Flavor

открытый класс Вкус {

частный длинный пряный;
частный String shortDesc;

@XmlValue
общественности Строка getShortDesc() {
возвращение shortDesc;
}
public void setShortDesc (String shortDesc) {
this.shortDesc = shortDesc;
}
@XmlAttribute
общественности Длинные getSpicy() {
возвращение пряные;

общественный комплект пустотСпицина (длинная пряная) {
this.spicy = spicy;
}

}

Смежные вопросы