Angenommen, ich habe eine Klasse namens Test , so
%Vor%
Auch eine XML-Zeichenfolge, die Daten für ein Objekt der Klasse Test enthält. XML-Zeichenfolge ist
Jetzt ist es meine Aufgabe, diese XML-Zeichenfolge zu analysieren und ein Objekt der Klasse Test zu erstellen und alle in dieser XML enthaltenen Daten in dieses Objekt zu schreiben. Ich verwende JDOM für das XML-Parsing. Ich möchte wissen, gibt es eine Lösung, durch die alle Daten, die im XML-Format sind direkt in Test Objekt kopiert werden?
Nun mache ich das so: Ich parse XML-String und bekomme Daten von jedem Knoten eins nach dem anderen und rufe dann die Setter-Methode auf, um Daten für jedes Feld des Klassenobjekts Test zu setzen.
Kurze Antwort: Ja, es gibt eine solche Lösung.
Es heißt " XML-Datenbindung " oder alternativ " O / X Mapping "(Objekt / XML-Zuordnung) oder" OXM ".
Das Konvertieren eines XML-Dokuments in ein Objekt heißt unmarshalling .
Das Konvertieren (Serialisieren) eines Objekts in ein XML-Dokument wird Marshalling genannt.
HINWEIS:
Die Begriffe Marshalling und unmarshalling beziehen sich NICHT NUR auf die Transformation von Object / XML und umgekehrt. Lesen Sie hier: Marshalling (Informatik) .
Javas eigene Lösung heißt Java-Architektur für XML-Bindung (JAXB) . Es ist eine Spezifikation beschrieben von JSR 222 . JDK enthält eine JAXB-Implementierung , so dass Sie (normalerweise) nichts tun Sie müssen keine eigenständige Referenzimplementierung (RI) von der JAXB-Projekthomepage herunterladen.
HINWEIS:
Sie können überprüfen, welche Version von JAXB Ihr JDK hat, indem Sie xjc ( bindender Compiler) , gebündelt mit JDK: xjc -version
Einfach googeln "JAXB Tutorial", es gibt Tonnen von ihnen.
JAXB ist eine Spezifikation und es gibt verschiedene Implementierungen davon (einschließlich Referenzimplementierung ). Aber diese traditionellen Implementierungen können XPath nicht verwenden, was sehr schade ist, weil die stark verschachtelten XML-Dateien, die XPath verwenden, viel effektiver sein können .
EclipseLink MOXy bietet eine JAXB-Implementierung mit vielen Erweiterungen. Einer davon ist XPath-basiertes Mapping . Ich fand es sehr nützlich, wenn eines meiner Projekte, wo OXM beteiligt war, durchgeführt wurde.
Hier sind einige verwandte Links:
Benutze JAXB , es ist ein Standard-Java-Weg, wie man XML-Bindungen bindet - das bedeutet Konvertieren Objekte zu XML und zurück. Sie können nur wenige Anmerkungen auf Ihre Klasse anwenden, und das ist im Grunde alles, was Sie tun müssen, damit Sie nicht Ihren eigenen benutzerdefinierten XML-Parser erstellen können.
Tags und Links java xml jaxb xml-binding oxm