如何使用 JAXB 使基 class 字段成为子 class 的 xml 模式的属性
How to make base class field an attribute of xml schema of sub class using JAXB
这是我正在做的事情:
这是我的形状 class,id 为
public class Shape {
private int id;
@XmlAttribute
public int getId(){
return id;
}
public void setId(int no)
id = no;
}
}
这是我的圆 class,它继承了形状 class。
@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
任何帮助!
您好,请尝试以下驱动程序 class。
public class 转换器 {
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();
}
}
}
这是我正在做的事情:
这是我的形状 class,id 为
public class Shape {
private int id;
@XmlAttribute
public int getId(){
return id;
}
public void setId(int no)
id = no;
}
}
这是我的圆 class,它继承了形状 class。
@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 任何帮助!
您好,请尝试以下驱动程序 class。
public class 转换器 {
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();
}
}
}