Travailler avec XML en Java : DOM, SAX, StAX et JAXB — guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec XML en Java : DOM, SAX, StAX et JAXB



XML (eXtensible Markup Language) reste l'un des formats clés pour le stockage et la transmission de données structurées. En Java, il existe plusieurs bibliothèques intégrées et populaires pour travailler avec XML. Dans cet article, nous allons aborder toutes les approches principales : des classiques DOM et SAX au moderne JAXB.



1. DOM (Document Object Model) — accès complet au document



Le parseur DOM charge l'intégralité du document XML en mémoire sous forme d'une structure arborescente. Cela offre un contrôle total sur le document : vous pouvez lire, modifier, supprimer et ajouter des nœuds.



Avantages de DOM :

  • Accès aléatoire à n'importe quel élément du document
  • Possibilité de modifier la structure XML
  • Modèle objet intuitif


Inconvénients :

  • Consommation mémoire élevée (tout le document en RAM)
  • Traitement lent des fichiers volumineux


Exemple d'utilisation de DOM :

import javax.xml.parsers.*;import org.w3c.dom.*;import java.io.*;

public class DomExample { public static void main(String[] args) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new File("books.xml"));

NodeList bookList = document.getElementsByTagName("book"); for (int i = 0; i < bookList.getLength(); i++) { Element book = (Element) bookList.item(i); String title = book.getElementsByTagName("title").item(0).getTextContent(); String author = book.getElementsByTagName("author").item(0).getTextContent(); System.out.println(title + " — " + author); } }}


2. SAX (Simple API for XML) — parsing en flux



SAX est un parseur orienté événements. Il lit le XML séquentiellement et appelle des méthodes callback lorsqu'il rencontre une balise ouvrante/fermante, du texte ou des attributs. La mémoire est utilisée de manière minimale.



Quand utiliser SAX :

  • Fichiers XML très volumineux (centaines de mégaoctets)
  • Lecture seule, sans modification
  • Ressources limitées de l'appareil


Exemple de parseur SAX :

import org.xml.sax.*;import org.xml.sax.helpers.*;import javax.xml.parsers.*;

public class SaxExample { public static void main(String[] args) throws Exception { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser();

DefaultHandler handler = new DefaultHandler() { boolean isTitle = false;

public void startElement(String uri, String localName, String qName, Attributes attributes) { if (qName.equalsIgnoreCase("title")) isTitle = true; }

public void characters(char ch[], int start, int length) { if (isTitle) { System.out.println("Title: " + new String(ch, start, length)); isTitle = false; } } };

saxParser.parse("books.xml", handler); }}


3. StAX (Streaming API for XML) — parsing en flux pratique



StAX est un compromis entre DOM et SAX. Il fonctionne également en mode flux, mais offre une interface pull plus pratique (vous demandez vous-même l'élément suivant).



Deux façons de travailler avec StAX :

  • XMLStreamReader — pour la lecture
  • XMLStreamWriter — pour l'écriture


import javax.xml.stream.*;import java.io.*;

public class StaxExample { public static void main(String[] args) throws Exception { XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader reader = factory.createXMLStreamReade

Recommendations