2016-11-30 31 views
1

下面的子類的XML模式的屬性是我在做什麼:如何使基類字段使用JAXB

這是我的形狀類具有ID

public class Shape { 
    private int id; 

    @XmlAttribute 
    public int getId(){ 
     return id; 
    } 

    public void setId(int no) 
     id = no; 
    } 

} 

這是我的圈子類它繼承了形狀類。

@XmlRootElement(name="Circle") 
    public class Circle extends Shape { 

     private int radius; 

     public int getRadius() { 
      return radius; 

     } 
     public void setRadius(int rad) { 
      radius = rad; 
     } 


} 

生成的POM文件

<?xml version="1.0" encoding="UTF-8"?> 
<Circle> 
<id>1345</id> 
<radius>5</radius> 
</Circle> 

我想這一點。請注意,id是上面生成的屬性而非元素。

<?xml version="1.0" encoding="UTF-8"?> 
<Circle id=1345> 
<radius>5</radius> 
</Circle> 

我該如何去做這件事。

我正在使用java8 jaxb 任何幫助!

回答

2

嗨請試試Driver類如下。

公共類轉換器{

public static void main(String[] args) { 
    Circle circle = new Circle(); 
     circle.setRadius(5); 
     circle.setId(1234); 
     try { 

     File file = new File("Y:\\file.xml"); 
     JAXBContext jaxbContext = JAXBContext.newInstance(Circle.class); 
     Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); 

     // output pretty printed 
     jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 

     jaxbMarshaller.marshal(circle, file); 
     jaxbMarshaller.marshal(circle, System.out); 

      } catch (JAXBException e) { 
     e.printStackTrace(); 
      } 
} 

}