Mapping von XML zu einem Objekt in Java
Angenommen ich habe eine Klasse namens Test, wie diese
public class Test {
private String testId;
private String description;
private String department;
public Test() {}
public Test(String id,String des,String dpt) {
this.testId = id;
this.department = dpt;
this.description = des;
}
public String getTestId() {
return testId;
}
public void setTestId(String testId) {
this.testId = testId;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
}
Auch ein XML-string, der die Daten enthält, die für ein Objekt der Klasse Test. XML-string
<test>
<testId>1</testId>
<description>This is first test</description>
<department>surgeon</department>
</test>
Nun, meine Aufgabe ist es, zu analysieren, dass XML-string und Erzeuge ein Objekt der Klasse Test und legen Sie alle Daten in dieser XML-Datei in das Objekt. Ich bin mit JDOM für XML-parsing. Ich möchte wissen, gibt es eine Lösung, durch die alle Daten, die im XML-format direkt kopiert und in Test Objekt?
Nun ich mache das so: ich parse XML-string und die Daten von jedem Knoten nacheinander, und rufen Sie dann die setter-Methode, um Daten für jedes Feld der Test Klasse object.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kurze Antwort: ja, es gibt eine solche Lösung.
Heißt es "XML-Datenbindung", oder alternativ "O/X-Mapping - " (Objekt/XML-Mapping), oder "OXM".
Konvertieren eines XML-Dokuments zu einem Objekt aufgerufen wird unmarshalling.
Umwandeln (serialisieren) ein Objekt in ein XML-Dokument heißt marshalling.
BEACHTEN:
Die Bedingungen marshalling und unmarshalling beziehen sich NICHT NUR auf Objekt/XML und Umgekehrt transformation. Lesen Sie hier: Marshalling (Computer Science).
Java-eigene Lösung wird als Java Architecture for XML Binding (JAXB). Es ist eine Spezifikation beschrieben, die von JSR 222. JDK beinhaltet eine JAXB-Implementierung, so dass Sie (in der Regel) keinen download standalone Referenz-Implementierung (RI) aus der JAXB Project home page.
BEACHTEN:
Sie können überprüfen, welche version von JAXB wird das JDK hat durch die Verwendung xjc (binding-compiler), welches mit JDK:
xjc -version
Nützliche links
Bindung -
die offizielle Oracle Java-Lehrpfad
aus der JAXB-Projekt (Referenz
Umsetzung)
Beispiel - sehr
einfach und leicht tutorial
Gestartet - ein kurzes tutorial mit Beispielen
Google einfach "JAXB-tutorial", es gibt Tonnen von Ihnen.
Wichtiger Hinweis:
JAXB-Spezifikation, und es gibt verschiedene Implementierungen (einschließlich Referenz-Implementierung). Aber diese traditionellen Implementierungen verwenden können XPath, das ist schade, denn für die stark verschachtelten XML-Dateien mit XPath können sehr viel wirksamer sein.
EclipseLink MOXy bietet eine JAXB-Implementierung mit vielen Erweiterungen. Einer von Ihnen ist XPath-basierte Zuordnung. Ich fand es sehr nützlich, wenn Sie in einem meiner Projekte, wo OXM beteiligt war.
Hier sind einige weiterführende links:
Mapping -
sehr hilfreiche Artikel von Blaise Doughan, das Team Führen
für EclipseLink JAXB (MOXy) Projekt. Schauen Sie sich auch die anderen Artikel in
seinen blog.
Verwenden JAXB, es ist ein standard-Java Art und Weise, wie XML-Bindungen - das bedeutet, dass die Umwandlung von Objekten in XML und zurück. Sie können nur für die wenigen Anmerkungen, die auf Ihre Klasse und das ist im Grunde alles, was Sie tun müssen, so vermeiden Sie die Erstellung Ihrer eigenen benutzerdefinierten XML-parser.