Mappage XML à un objet en Java
Supposons que j'ai une classe appelée Test, comme ceci
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;
}
}
Aussi une chaîne XML qui contient les données d'un objet de la classe Test. La chaîne XML est
<test>
<testId>1</testId>
<description>This is first test</description>
<department>surgeon</department>
</test>
Maintenant, ma tâche consiste à analyser la chaîne XML et créer un objet de la classe Test et de mettre toutes les données contenues dans ce document XML dans un objet. Je suis à l'aide de JDOM pour analyse XML. Je veux savoir, c'est qu'il ya une solution grâce à laquelle toutes les données dans le format XML est directement copié dans Test objet?
Maintenant, je le fais comme ça: je parse XML chaîne et obtenir les données de chaque nœud, un par un, puis l'appel de méthode de définition de définir les données pour chaque champ de la Test objet de classe.
OriginalL'auteur Waqas Ali | 2013-05-25
Vous devez vous connecter pour publier un commentaire.
Réponse courte: Oui, il ya une telle solution.
Il est appelé "liaison de données XML", ou bien "O/X Cartographie" (Objet/XML Mapping), ou "OXM".
La conversion d'un document XML à un objet est appelé unmarshalling.
De conversion (sérialisation) d'un objet à un document XML est appelé de triage.
REMARQUE:
Les termes de triage et unmarshalling se rapportent NON SEULEMENT à l'Objet/XML et vice versa transformation. Lire ici: De Triage (Informatique).
Java solution est appelée Java Architecture for XML Binding (JAXB). C'est une spécification décrit par JSR 222. JDK comprend un JAXB mise en œuvre, de sorte que vous (en général) n'ont pas besoin de télécharger autonome Implémentation de Référence (RI) de la JAXB page d'accueil du Projet.
REMARQUE:
Vous pouvez vérifier, la version de JAXB de votre JDK est en utilisant xjc (liaison compilateur), qui est livré avec le JDK:
xjc -version
Liens utiles
La liaison -
l'officiel Oracle Java apprentissage trail
à partir de la JAXB projet (de Référence
La mise en œuvre)
exemple - très
simple et facile tutoriel
Commencé - un autre tutoriel avec des exemples
Juste google "JAXB tutoriel", il y a des tonnes d'eux.
Remarque importante:
JAXB est une spécification et il existe différentes implémentations (y compris l'Implémentation de Référence de). Mais ces implémentations ne peut pas utiliser XPath, ce qui est triste, parce que pour le fortement imbriqués fichiers XML à l'aide de XPath peut être beaucoup plus efficace.
EclipseLink MOXy fournit un JAXB mise en œuvre avec de nombreuses extensions. L'un d'eux est XPath cartographie. Je l'ai trouvé extrêmement utile, lors d'un de mes projets, où OXM a été impliqué.
Voici quelques liens relatifs:
La cartographie -
très utile article de Blaise Doughan, le chef d'Équipe
pour EclipseLink JAXB (MOXy) du projet. Découvrez également d'autres articles en
son blog.
OriginalL'auteur informatik01
Utilisation JAXB, c'est un standard de Java façon de comment XML liaisons - à-dire la conversion des objets XML et à l'arrière. Vous pouvez simplement appliquer quelques annotations sur votre classe, et c'est pratiquement tout ce que vous devez faire afin d'éviter la création de votre propre analyseur XML personnalisé.
OriginalL'auteur Petr Mensik