Wie ignoriere ich ein Feld von der Bindung an XML mit JAXB?

Ich habe eine einfache Klasse, die so aussieht

    import nl.hu.pf.coproco.model.Observeable;

    @XmlRootElement (name = "Purpose")
    @XmlAccessorType (XmlAccessType.FIELD)
    public class Purpose implements Observeable{
        private String name;
        private ArrayList<Observer> observers;

        @XmlElement (name = "subPurpose")
        private ArrayList<Purpose> subPurposes;

        //methods
    }

But Observable ist eine Schnittstelle, daher bekomme ich eine Ausnahme, weil JAXB keine Schnittstellen verarbeiten kann. Ich versuchte herauszufinden, wie man das Feld mit dem @ ignorieArrayList<Observer> so wird es nicht nach xml exportiert.

Ich habe versucht, mit der@XmlTransient annotation aber das bekomme ich folgende eceptionjavax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"purpose"). Expected elements are <{}Purpose>

Dies passiert beim Aufheben des Marshalls, aber ich möchte diese Klasse auch Marshall

Sample xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<purpose>
    <name>All Purposes</name>
    <subPurpose>
        <name>Creational</name>
    </subPurpose>
    <subPurpose>
        <name>Structural</name>
    </subPurpose>
    <subPurpose>
        <name>Behavioral</name>
        <subPurpose>
            <name>Behavioral 1</name>
        </subPurpose>
        <subPurpose>
            <name>Behavioral 2</name>
        </subPurpose>
    </subPurpose>
</purpose>

Die SchnittstelleObservable sieht aus wie das

public interface Observeable {
    public void registerObserver(Observer o);
    public void removeObserver(Observer o);
    public void notifyObservers(Object o, String arg);
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage