JAXB pour les débutants: Tutoriel pour le traitement XML avec Java
Pour que les applications communiquent entre elles, il est souvent nécessaire de convertir les données dans un format hautement compatible. À cet effet, la bibliothèque JAXB existe sous Java, qui traite les objets en fichiers XML.
Générer un fichier XML avec JAXB - Meilleures pratiques
JAXB signifie Java Architecture for XML Binding . Il permet aux objets Java d'être convertis en fichiers XML et vice versa. Avant de commencer, il y a quelques points à garder à l'esprit:
- JAXB fait partie intégrante de la suite JRE depuis la version 1.6 . De plus, l'environnement de développement Java doit être à jour car il corrige des bugs.
- Évitez les types de données primitifs tels que float, entier décimal ou négatif ainsi que les types de données anonymes . Il n'y a pas d'équivalent dans JAXB pour cela. Sinon, les objets, les types de données numériques, les listes et les ensembles peuvent être convertis. JAXB ne peut pas non plus gérer les types de données complexes tels que java.time.LocalDate . Cela nécessite un adaptateur spécialement créé.
- Dans le jargon technique, la direction de Java vers XML est appelée marshaling, tandis que le démasquage signifie la direction opposée.
annotations XML
Dernières vidéos
JAXB pour les débutants: tutoriel utilisant l'exemple d'une collection de CD
AudioCD.java: Les attributs du CD audio sont définis ici
MusicDB.java: la collection de musique se compose d'une liste de CD audio
Notre tutoriel concerne une collection de CD qui est sortie en XML. Il se compose de plusieurs CD audio. L'artiste, l'année de sortie, le nom de l'album et les chansons sont enregistrés pour chaque CD audio.
- Il faut d'abord créer la classe, qui contient les données d'un CD audio. Cela inclut l'artiste, l'année de sortie, l'album et les chansons qui sont sur le CD.
- Afin de mieux contrôler la sortie au format XML, des annotations XML commençant par @ sous Java sont nécessaires.
- L'élément racine du fichier XML peut être spécifié à l'aide de l'annotation suivante: @XmlRootElement (name = "Audiocd")
- Vous pouvez insérer une annotation au-dessus des méthodes getter ou setter qui spécifie un autre nom pour un attribut Java. Par exemple, au lieu de l'année d'attribut, l'année de publication doit être sortie: @XmlElement (name = "year of publication")
- L'ordre des attributs est déterminé par l'annotation @XmlType (propOrder = {"artist", "title", "year", "songlist"}) . Cela signifie que le nom de l'artiste apparaît en premier dans le fichier XML, suivi du nom de l'album, de l'année de sortie et de la liste des chansons. Sinon, l'ordre dépend du fichier Java.
- Ensuite, créez une nouvelle classe Java appelée MusicDB, qui contient une liste de CD audio. Le nom de la collection de musique et l'emplacement de la collection de musique sont également enregistrés ici. En principe, la procédure est similaire à celle du fichier Java mentionné ci-dessus.
Des objets Java aux fichiers XML
Dernières vidéos
AudioCDMain.java: plusieurs CD audio sont créés ici
AudioCDMain.java: créer la collection de musique
AudioCDMain.java: convertit le code en XML
La conversion elle-même s'effectue dans un programme de test, plus précisément dans la méthode principale.
- Tout d'abord, créez plusieurs instances de CD audio afin que plusieurs CD audio soient créés.
- Une instance de la collection de musique de type MusicDB est également requise.
- De plus, JAXB doit savoir quelle classe Java contient l'élément racine. Dans notre cas, il s'agit de la classe MusicDB : JAXBContext context = JAXBContext.newInstance (MusicDB.class);
- La conversion a lieu à l'aide de l'instance Marshaller, qui est liée à la méthode JAXB mentionnée ci-dessus: Marshaller m = context.createMarshaller ();
- La méthode Marshaller fournit d'autres options, telles que le format XML de sortie du document: .setProperty (Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
Le tout dans la direction opposée
Dernières vidéos
AudioCDMain.java: JAXB génère des objets Java à partir d'un fichier XML
Le fichier XML a déjà été formaté par JAXB
Fondamentalement, la conversion dans l'autre sens se déroule de manière similaire:
- Tout d'abord, une instance de la méthode unmarshaller est créée: unmarshaller at = context.createUnmarshaller ();
- Ensuite, l'instance d'unmarshaler a besoin du nom du fichier XML précédemment créé: MusicDB mdb2 = (MusicDB) um.unmarshal (nouveau FileReader (MUSICDB_XML));