Ich habe 2 Klassen:Ohne Felder in JAXB
@XmlRootElement
public class A {
private Long id;
private B b;
// setters and getters
}
und
@XmlRootElement
public class B {
private Long id;
private String field1;
private String field2;
// setters and getters
}
standardmäßig, wenn ich eine Instanz der Klasse A
in die XML-Transformation, werde ich alle seine Felder (id
) und die referenzierten B
Klassenfelder (id
, field1
, field2
) wie folgt aus:
<a>
<id>2</id>
<b>
<id>5</id>
<field1>test1</field1>
<field2>test3</field2>
</b>
</a>
Ist es möglich zu ändern welche Felder von der referenzierten Klasse B
sind im XML der A
Klasse enthalten? Z.B. Ich möchte sagen, dass, wenn ich eine Instanz von A
Klasse verwandeln, ich will nur id
von der B
Klasse erhalten (keine field1
und field2
Felder), so möchte ich erhalten:
<a>
<id>2</id>
<b>
<id>5</id>
</b>
</a>
Ich will nicht um dauerhaft die B
Klasse mit Anmerkungen versehen (@XMLTransient
oder @XMLElement
verwendet wird), es zu erreichen, da es Fälle gibt, in denen ich ganze B
Klasse exportieren möchten wie (mit id
, field1
und field2
.)
ich will nur nicht exportieren all diese Felder, wenn die B
Klasse ist referenziert von A
.
Ist dies sogar mit JAX-B möglich?
Danke! Ich denke, es verkompliziert die Dinge ein wenig, wenn ich die JAXB-Implementierung von Glassfish verwende ... Es scheint, dass es keine auf Annotationen basierende Lösung gibt, und ich muss ein zusätzliches Anpassungs-XML erstellen. –