Benutzerdefinierte Serialisierung in JAXB
Gibt es eine Möglichkeit zum anpassen der XML-Serialisierung ist in JAXB, in der gleichen Weise, dass es möglich ist mit IXmlSerializable-in .NET? (D. H. die Fähigkeit zur Steuerung der Serialisierung eines Objekts mit dem äquivalent von einem XmlReader/- Writer).
Habe ich einen Blick auf XmlAdapter und @XmlJavaTypeAdapter, aber Sie scheinen gerade zu sein, die zum umwandeln von Typen zu und von serializable Formen, das ist nicht ganz das, was ich will.
Update: In bestimmten, würde ich mag, um das anpassen der Deserialisierung von einem root-Objekt, das bestimmt, programmatisch, genau wie zu Deserialisieren der inneren XML-Dokumenten (z.B. erstellen eines jaxb unmarshaller mit einem bestimmten Satz von bekannten Arten).
Update: ich habe einen Weg gefunden das problem zu lösen, aber es ist so ein ekliger hack ich ' ll wahrscheinlich gehen Sie mit einer der vorgeschlagenen Lösungen, die von den anderen Postern.
- Können Sie geben einige Informationen darüber, wie Sie möchten anpassen der Serialisierung? Zum Beispiel, Sie wollen nicht den XML-tag-name der gleiche sein wie der name des Feldes.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir nicht sicher, ob ich wirklich verstehe, was dein Ziel ist, aber vielleicht könnten Sie tun, was Sie tun möchten programmgesteuert innerhalb des no-args-Konstruktor root-Objekt, das aufgerufen wird, instanziiert das Objekt, wenn es unmarshallt.
OK, so habe ich es geschafft, damit es funktioniert, obwohl es so eine scheußliche Lösung, dass ich denke, ich werde finden, eine höhere Ebene, Weg von der Arbeit, um das problem, wie Fabian und basszero erwähnt haben. Die Idee mit dem folgenden code wird zum erstellen einer generic-serialisierbare Referenz auf die Daten, die Sie serialisieren möchten, die behauptet, eine JAXB-java-Typ-adapter zum ausführen der Serialisierung programmgesteuert und ein string-Feld, in dem die resultierende XML.
Hinweis: der Code wurde stark vereinfacht für die Anzeige...
Klingt wie Sie wollen ein root-Knoten enthalten zwei verschiedene Arten von xml-Knoten/Bäume basiert auf einer Art Attribut oder Kenntnisse aus den root-Knoten selbst.
Ich Neige dazu zu verwenden, JAXB, indem zunächst ein schema (xsd) und dann die Generierung der Java-Quellcode, die ich NIE ändern. Ich nur ändern Sie das schema und regen. Ich erkannte, dass JAXB kann nicht verwendet werden, die andere Möglichkeit, von Anmerkungen zu Quelle, kaufen, ich kann nicht sprechen auf diese Weise, da ich es nicht verwenden. Wenn du dir ein schema ... Lesen Sie weiter
Bedenken Sie: http://www.w3schools.com/Schema/schema_complex_indicators.asp
Eher als der Wechsel der unmarshaller, nur sind beide xml-Definitionen. Sie erhalten analysiert-unabhängig und können Sie variieren Sie das Programm der Ablaufsteuerung über welche attribute würden Sie auf den root-Knoten.