Ich habe mein Modell:moxy JAXB: Wie Elemente aus auszuschließen Rangier
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class CustomerTest {
private Long id;
@XmlPath("contact-info/billing-address")
private AddressTest billingAddress;
@XmlPath("contact-info/shipping-address")
private AddressTest shippingAddress;
@XmlPath("FileHeader/SchemaVersion/text()")
private String schemaVersion;
}
Und ich einfach das Objekt wie folgt:
private void marshallCustomerTest() {
try {
JAXBContext jc = JAXBContext.newInstance(CustomerTest.class);
CustomerTest customer = new CustomerTest();
customer.setId(new Long(10));
customer.setSchemaVersion("3.2");
AddressTest billingAddress = new AddressTest();
billingAddress.setStreet("1 Billing Street");
customer.setBillingAddress(billingAddress);
AddressTest shippingAddress = new AddressTest();
shippingAddress.setStreet("2 Shipping Road");
customer.setShippingAddress(shippingAddress);
Marshaller m = jc.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(customer, System.out);
} catch (JAXBException jex) {
jex.printStackTrace();
log.error(jex);
}
}
Diese produzieren die nächste XML:
<customerTest xmlns:fe="http://www.facturae.es/Facturae/2009/v3.2/Facturae" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<id>10</id>
<contact-info>
<billing-address>
<street>1 Billing Street</street>
</billing-address>
<shipping-address>
<street>2 Shipping Road</street>
</shipping-address>
</contact-info>
<FileHeader>
<SchemaVersion>3.2</SchemaVersion>
</FileHeader>
</customerTest>
Wie Sie sehen können, gibt es keine @ XmlPath Annotation für 'ID' Eigenschaft, aber dies ist auch in der endgültigen XML vorhanden. Ich weiß, dass ich dieses Verhalten vermeiden kann, indem ich die Eigenschaft 'id' auf null setze, aber ich möchte wissen, ob es einen anderen Weg gibt. Der Punkt ist, dass mein reales Modell viel größer ist als dieses und ich viele Eigenschaften auf null setzen müsste.
Irgendwelche Hilfe?
Vielen Dank im Voraus.
Vielen Dank! Sie sind immer sehr hilfreich. – rocotocloc