Ist es möglich, eine Wrapper-Klasse beim JAXB-Marshalling zu ignorieren?

Ich versuche, JAXB dazu zu bringen, eine Wrapper-Klasse während des Mashalling-Prozesses zu ignorieren. Es ist sinnvoll, diese Wrapper-Klasse im Code zu haben, da sie alle zugehörigen Informationen zusammenhält, sie jedoch während des Marshalling-Prozesses entfernen muss. Das Folgende ist der relevante Code.

@XmlType(name = "root")
@XmlRootElement(name = "root")
public class Root {

    @XmlElementRef
    private List<Resource> resources = new ArrayList<>();

    public void addResource(Resource resource) {
        resources.add(resource);
    }
}


@XmlRootElement(name = "", namespace = "")
@XmlAccessorType(XmlAccessType.NONE)
public class Resource {

    @XmlElementRef
    private Element element;
    @XmlElementRef
    private FieldType fieldType;
    @XmlElementRef
    private ListType listType;
}

Root ist das Hauptobjekt, und Resource ist das Wrapper-Objekt, für das kein Knoten erstellt werden soll. Ich möchte jedoch weiterhin, dass das Element, der FieldType und der ListType innerhalb der Ressource gerendert werden.

Das habe ich aktuell:

<root>
    <>
        <element name="resource1"/>
        <fieldType name="resource1--type">
        </fieldType>
        <listType name="resource--list">
        </listType>
    </>
    <>
        <element name="resource2"/>
        <fieldType name="resource2--type">
        </fieldType>
        <listType name="resource2--list">
        </listType>
    </>
</root>

Was ich erreichen möchte, ist Folgendes:

<root>
    <element name="resource1"/>
    <fieldType name="resource1--type">
    </fieldType>
    <listType name="resource--list">
    </listType>
    <element name="resource2"/>
    <fieldType name="resource2--type">
    </fieldType>
    <listType name="resource2--list">
    </listType>
</root>

Ich weiß nicht, ob es möglich ist, aber jede Hilfe wäre dankbar.

Vielen Dank.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage