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);
}