以下是您可以做的几件事:
Java 模型
富
您可以使用 注释父类上的属性@XmlAttribute
。
import javax.xml.bind.annotation.*;
@XmlTransient
public class Foo {
private String att1;
private String att2;
@XmlAttribute
public String getAtt1() {
return att1;
}
public void setAtt1(String att1) {
this.att1 = att1;
}
public String getAtt2() {
return att2;
}
public void setAtt2(String att2) {
this.att2 = att2;
}
}
酒吧
您可以覆盖子类上的属性并使用@XmlAttribute
.
import javax.xml.bind.annotation.*;
@XmlRootElement
public class Bar extends Foo {
@Override
@XmlAttribute
public String getAtt2() {
return super.getAtt2();
}
@Override
public void setAtt2(String att2) {
super.setAtt2(att2);
}
}
演示代码
演示
下面是一些演示代码,您可以运行它来证明一切正常。
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Bar.class);
Bar bar = new Bar();
bar.setAtt1("a");
bar.setAtt2("b");
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(bar, System.out);
}
}
输出
下面是运行演示代码的输出:
<?xml version="1.0" encoding="UTF-8"?>
<bar att1="a" att2="b"/>