Ich habe eine XML-Datei. In dieser Datei haben einige der Elemente Attribute, die sich ändern. Ich möchte diese Attribute in eine Map einfügen. Wie mache ich das?
Mein XML ist:
%Vor% Dabei kann das VARS
-Element Attribute haben, die sich ändern, und ich weiß nicht im Voraus, was diese Elemente sein werden.
Ich habe eine Klasse für diesen Zweck erstellt:
%Vor% Ich möchte das Element VARS
einem Map
zuordnen. Ich möchte, dass die Tags wie CAUSE
, LOT
Schlüssel und deren Werte die Werte in der Map sind. Ich habe einen XmlAdapater
für diesen Zweck geschrieben:
Dieser Adapter gibt mir null
für die Variable variableMap
. Wie sollte der Adapter dafür modifiziert werden?
Sie könnten Folgendes tun:
MapAdapter
) Sie könnten Folgendes für Ihre XmlAdapter
tun, wo Sie eine Instanz von Map
in ein Objekt mit einem List
von DOM Element
konvertieren. Sie erstellen die Instanzen von Element
so, dass der Name der Schlüssel aus dem Map-Eintrag ist und der Textinhalt der Wert ist.
MapAdapter
Um die Leistung zu verbessern, möchten wir minimieren, wie oft DocumentBuiderFactory
und DocumentBuilder
instanziiert werden. Wir können dies tun, indem wir eine Instanz von MapAdapter
für JAXB erstellen und sie auf Marshaller
und Unmarshaller
setzen. Auf diese Weise wird JAXB diese Instanz verwenden, anstatt jedes Mal eine neue zu erstellen, wenn der Adapter benötigt wird.
Wenn Sie MOXy als Ihren JAXB-Provider verwenden, können Sie die Erweiterung @XmlVariableNode
nutzen, um die Zuordnung dieses Anwendungsfalls zu vereinfachen: