我必须使用JAXB在JAVA中对ParentClass和ChildClass进行分类。 ChildClass扩展了ParentClass。 当我序列化ChildClass的一个对象时,在生成的XML中,ParentClass属性首先出现,我想首先使用ChildClass属性,然后是ParentClass属性。
这可能吗?
谢谢
答案 0 :(得分:9)
JAXB执行此操作的原因是为了匹配XML模式中的继承。但是,您可以执行以下操作:
<强>父强>
import javax.xml.bind.annotation.XmlTransient;
@XmlTransient
public abstract class Parent {
private String parentProp;
public String getParentProp() {
return parentProp;
}
public void setParentProp(String parentProp) {
this.parentProp = parentProp;
}
}
儿童强>
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
@XmlRootElement
@XmlType(propOrder={"childProp", "parentProp"})
public class Child extends Parent {
private String childProp;
public String getChildProp() {
return childProp;
}
public void setChildProp(String childProp) {
this.childProp = childProp;
}
}
<强>演示强>
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Child.class);
Child child = new Child();
child.setParentProp("parent-value");
child.setChildProp("child-value");
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(child, System.out);
}
}
<强>输出强>
<child>
<childProp>child-value</childProp>
<parentProp>parent-value</parentProp>
</child>