Comment lire et écrire des fichiers XML avec Java

Les fichiers XML peuvent être utilisés à diverses fins, notamment pour le stockage de données. Avant que JSON ne devienne populaire, XML était le format préféré pour représenter, stocker et transporter des données structurées.

Même si la popularité du XML a diminué ces dernières années, il est possible que vous le rencontriez occasionnellement, il est donc important d’apprendre à travailler avec. Découvrez comment utiliser l’API DOM pour lire et écrire des fichiers XML avec Java.

Conditions requises pour le traitement de XML en Java

La Java Standard Edition (SE) inclut l’API Java pour le traitement XML (JAXP), qui est un terme générique couvrant la plupart des aspects du traitement XML. Il s’agit notamment de :

  • DOM : Le modèle d’objet de document comprend des classes permettant de travailler avec des objets XML tels que des éléments, des nœuds et des attributs. L’API DOM charge le document XML complet en mémoire pour traitement, et n’est donc pas bien adaptée aux fichiers XML volumineux.
  • SAX : L’API simple pour XML est une API événementielle pour la lecture de XML. Elle déclenche des événements en réponse au contenu XML qu’elle trouve lors de l’analyse d’un fichier. L’empreinte mémoire de cette méthode est faible, mais il est plus difficile de travailler avec l’API qu’avec le DOM.
  • StAX : L’API Streaming pour XML est un ajout récent. Elle permet un filtrage, un traitement et une modification du XML en flux haute performance. Bien qu’elle évite de charger l’ensemble du document XML en mémoire, elle fournit une architecture de type pull plutôt qu’une architecture événementielle, de sorte qu’elle est plus facile à coder que l’API SAX.

Pour traiter le XML en Java, vous devez importer ces paquets :

Voir aussi :  Qu'est-ce que la table ASCII et comment l'utiliser ?

Préparation d’un exemple de fichier XML

Pour comprendre l’exemple de code et les concepts qui le sous-tendent, utilisez cet exemple de fichier XML de Microsoft. En voici un extrait :

Lecture du fichier XML avec l’API DOM

Examinons les étapes de base requises pour lire un fichier XML à l’aide de l’API DOM. Commencez par créer une instance de DocumentBuilder que vous utiliserez pour analyser le document XML :

Vous pouvez maintenant charger l’ensemble du document en mémoire, en commençant par l’élément XML racine. Dans notre exemple, il s’agit de l’élément catalogue de l’élément

Et voilà, vous avez maintenant accès à l’ensemble du document XML à partir de son élément racine, catalogue.

Extraction d’informations à l’aide de l’API DOM

Maintenant que vous disposez de l’élément racine XML, vous pouvez utiliser l’API DOM pour extraire des informations intéressantes. Par exemple, obtenez tous les éléments livre de l’élément racine et les passer en boucle. Notez que getChildNodes() renvoie tous les éléments enfants, y compris le texte, les commentaires, etc. Dans votre cas, vous n’avez besoin que des éléments enfants, vous pouvez donc ignorer les autres :

Comment trouver un élément enfant spécifique, étant donné le parent ? Créez une méthode statique qui renvoie le premier élément correspondant s’il est trouvé, ou null. La procédure consiste à obtenir la liste des nœuds enfants et à les parcourir en boucle pour trouver les nœuds éléments portant le nom spécifié.

Notez que l’API DOM traite le contenu textuel à l’intérieur d’un élément comme un nœud séparé de type TEXT_NODE. Le contenu textuel peut être constitué de plusieurs nœuds textuels adjacents, c’est pourquoi vous aurez besoin d’un traitement spécial pour récupérer le texte d’un élément :

Voir aussi :  Comment écrire les meilleurs fichiers README

Armé de ces fonctions de commodité, jetez un coup d’œil à ce code pour énumérer certaines informations de l’échantillon XML. Il montre des informations détaillées pour chaque livre disponible dans un catalogue :

Voici une explication pas à pas du code :

  1. Le code parcourt les nœuds enfants de catalogue l’élément racine.
  2. Pour chaque nœud enfant, représentant un livre, il vérifie si le type du nœud est un élément ELEMENT_NODE. Si ce n’est pas le cas, il passe à l’itération suivante.
  3. Si le noeud enfant est un ELEMENT_NODE, (Élément)enfant le transforme en objet Element.
  4. Le code extrait ensuite divers attributs et données de caractère de l’élément book, notamment « id », « author », « title », « genre », « price », « pub date » et « description ». Il imprime ces données à l’aide de l’élément System.out.printf pour imprimer ces données.

Voici à quoi ressemble la sortie :

Écriture d’une sortie XML à l’aide de l’API de transformation

Java fournit l’API de transformation API de transformation XML pour transformer les données XML. Nous utilisons cette API avec l’interface transformation d’identité pour générer des résultats. À titre d’exemple, ajoutons une nouvelle livre à l’exemple de catalogue présenté ci-dessus.

Vous pouvez obtenir les détails d’un livre (auteur, titre, etc.) à partir d’une source externe, comme un fichier de propriétés ou une base de données. Vous pouvez utiliser le fichier de propriétés suivant comme exemple :

La première étape consiste à analyser le fichier XML existant à l’aide de la méthode présentée ci-dessus :

Vous chargez ensuite les données du fichier de propriétés à l’aide de la méthode Propriétés fournie en Java. Le code est assez simple :

Voir aussi :  TanStack Query vs. useEffect Hook : Lequel est le meilleur pour récupérer des données dans React ?

Une fois les propriétés chargées, vous pouvez récupérer les valeurs que vous souhaitez ajouter dans le fichier de propriétés :

Créez maintenant un fichier livre vide.

L’ajout des éléments enfants à l’élément livre est trivial. Pour plus de commodité, vous pouvez rassembler les noms des éléments requis dans un fichier liste et ajouter les valeurs dans une boucle.

Les catalogue est désormais doté du nouvel élément livre a été ajouté à l’élément book Il ne reste plus qu’à rédiger le XML mis à jour.

Pour écrire le XML, vous avez besoin d’une instance de Transformateur que vous pouvez créer comme suit :

Vous pouvez utiliser le transformateur setOutputProperty() pour demander l’indentation de la sortie.

La dernière étape consiste à appliquer la transformation. Le résultat apparaît dans le flux de sortie,System.out.

Pour écrire la sortie directement dans un fichier, utilisez ce qui suit :

Voilà toutes les étapes nécessaires pour lire et écrire des fichiers XML en Java.

Vous savez maintenant comment lire et écrire des fichiers XML avec Java

L’analyse et la manipulation de XML avec Java est une compétence précieuse que vous utiliserez souvent dans des programmes réels. Les API DOM et Transform sont particulièrement utiles.

Comprendre le DOM, en particulier, est vital si vous prévoyez d’écrire du code côté client pour des applications ou des sites Web. L’interface du DOM est universelle, de sorte que vous pouvez travailler avec elle en utilisant un code similaire dans des langages aussi différents que Java et JavaScript.

Cliquez pour évaluer cet article !
[Total: Moyenne : ]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *