Java tutorial
import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; public class Main { public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(Child.class); Child child = new Child(); child.setParentProperty1("parentProperty1"); child.setParentProperty2("parentProperty2"); child.setChildProperty("childProperty"); Marshaller marshaller = jc.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); marshaller.marshal(child, System.out); } @XmlRootElement @XmlAccessorType(XmlAccessType.PROPERTY) public static class Child extends Parent { private String childProperty; @Override @XmlElement public String getParentProperty2() { return super.getParentProperty2(); } public String getChildProperty() { return childProperty; } public void setChildProperty(String childProperty) { this.childProperty = childProperty; } } @XmlAccessorType(XmlAccessType.NONE) public static class Parent { private String parentProperty1; private String parentProperty2; public String getParentProperty1() { return parentProperty1; } public void setParentProperty1(String parentProperty1) { this.parentProperty1 = parentProperty1; } public String getParentProperty2() { return parentProperty2; } public void setParentProperty2(String parentProperty2) { this.parentProperty2 = parentProperty2; } } }