序列化多层XML元素

时间:2016-08-22 14:58:10

标签: java xml serialization jaxb

假设我正在尝试从对象中创建XML文档。这可能是在单个Food类上使用JAXB注释,还是我需要为Cost和Flavor创建内部类?

我知道我可以使用@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;
}

2 个答案:

答案 0 :(得分:1)

添加新的Java类成本

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

exdend class Food

@XmlRootElement
public class Food {

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

   private Cost cost;
   ...

答案 1 :(得分:0)

你也可以在Flavor class

中使用这样的东西

public class Flavor {

私人长辣;
private String shortDesc;

<强> @XmlValue
    public String getShortDesc(){
        return shortDesc;
    }
    public void setShortDesc(String shortDesc){
        this.shortDesc = shortDesc;
    }
    的 @XmlAttribute
    public Long getSpicy(){
        回辣;
    }
    public void setSpicy(long spicy){
        this.spicy =辣;
    }

}