JAXB: Wie passen Xml-Serialisierung von Doppel-Felder

Ich habe ein legacy-Klasse, mit einer Menge von public double Felder. Alle double-Felder werden initialisiert mit Double.MAX_VALUE zu zeigen, dass Sie leer sind. (Das Erbe der Serialisierung kodiert wird, die zu ignorieren, die Feld-und nicht serialisieren, wenn das Feld entspricht Double.MAX_VALUE).

Versuchen wir nun, die Serialisierung dieser Klasse, um Xml-Daten mit JAXB Marshaller. Es funktioniert gut, außer, dass wir verhindern wollen, dass das generieren von Xml für die Felder, die gleich Double.MAX_VALUE.

Wir sind nicht mit einem separaten JAXB schema, nur markieren unsere Klassen mit verschiedenen javax.xml.bind.annotation Anmerkungen. Wenn ein schema verwendet wird, können Sie ein <javaType> - element zum angeben einer benutzerdefinierten Datentyp-Konverter. Gibt es eine Möglichkeit, dies zu tun mit Anmerkungen oder programmgesteuert?

Nach dem Versuch, Ansatz unten empfohlen, ich kann immer noch nicht XmlAdapter abgeholt:

@XmlJavaTypeAdapters({
@XmlJavaTypeAdapter(value=EmptyDoubleValueHandler.class, type=Double.class), @XmlJavaTypeAdapter(value=EmptyDoubleValueHandler.class, type=double.class)})
package tta.penstock.data.iserver;

import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapters;

Meine top-level-Klasse ist: tta.eingraben.Daten.iserver.OrderBlotter, enthält eine Liste der tta.eingraben.Daten.iserver.OrderResponseWrappers die sich com.eztech.OrderResponse. Alle double-Felder enthalten sind, in com.eztech.OrderResponse.

Mein unit-test-code ist der folgende:

JAXBContext context = JAXBContext.newInstance(new Class[] { OrderBlotter.class, OrderResponseWrapper.class, OrderResponse.class});

Marshaller marshaller = context.createMarshaller();
StringWriter stringWriter = new StringWriter();
marshaller.marshal(blotter, stringWriter);
System.out.println("result xml=\n" + stringWriter.toString());

Aber die double-Werte noch nicht bekommen, behandelt, indem die XmlAdapter. Ich weiß, ich bin etwas fehlt einfach, aber ich bin mir nicht sicher, was es ist.

InformationsquelleAutor Sam Goldberg | 2010-11-10

Schreibe einen Kommentar