java - 如何使用 JAXB 使基类字段成为子类 xml 模式的属性

标签 java jaxb jaxb2

这就是我正在做的事情:

这是我的形状类,有 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 任何帮助!

最佳答案

嗨,请尝试下面的驱动程序类。

公共(public)类转换器{

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

}

关于java - 如何使用 JAXB 使基类字段成为子类 xml 模式的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40882481/

相关文章:

java - Android:带有 EditText 的 AlertDialog 不会自动显示键盘

java - 如何使用命令行和参数读取文件名?

java - 如何使用 java Jersey 在资源内发出 HTTP 请求?

java - 将 null 分配给 XMLGregorianCalendar

java - 我可以从运行时将 XmlAdapter 添加到 JAXB(不带注释)吗?

xml - JAXB:如何围绕 XmlRootElement 添加包装器?

java - Lambda 比较器排序列表

java - 在 javax.xml.bind 中创建一个通用集合

java - @XmlElement注解中的sense类型元素是什么

java - JAXB - 如何设置 xsi :type of a XML element based on its value?