Java HTML / XML How to - Ignore a parent class when Serializing to XML








Question

We would like to know how to ignore a parent class when Serializing to XML.

Answer

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;
//from www  . ja  v  a 2  s  .  c o  m
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;
    }
  }
}