Как сделать поле базового класса атрибутом XML-схемы подкласса, используя JAXB

Вот что я делаю:

Это мой класс формы, который имеет идентификатор

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>

Я хочу этот. Обратите внимание, что идентификатор является атрибутом, а не элементом, как указано выше.

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

Как я могу сделать это?

Я использую java8 любую помощь!

1 ответ

Решение

Привет Пожалуйста, попробуйте класс водителя, как показано ниже.

Public Class Converter {

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();
          }
}

}

Другие вопросы по тегам