这是要组装的类,都把他放到一个java文件里去了
class Base{}
@XmlTransient
class A extends Base{
private String str;
@XmlElement
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlRootElement(name = "root")
class root<T extends Base>{
private String str;
private T t;
@XmlElement(name = "request")
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
@XmlElement
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
}
测试:
@Test
public void test4(){
A a = new A();
a.setStr("aaaaa");
root rc = new root();
rc.setT(a);
rc.setStr("aaaaaa");
JAXBContext context;
try {
context = JAXBContext.newInstance(root.class);
Marshaller mar = context.createMarshaller();
mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
mar.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
StringWriter writer = new StringWriter();
mar.marshal(rc, writer);
System.out.println(writer.toString());
} catch (JAXBException e) {
e.printStackTrace();
}
}
结果为什么request标签是空的
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
<str>aaaaaa</str>
<request/>
</root>