Si vous avez travaillé avec des API d'entreprise héritées, consommé des flux RSS, ouvert un fichier .docx,
ou dessiné un SVG, vous avez utilisé XML — même si vous ne le saviez pas. XML fait fonctionner plus de logiciels
que la plupart des développeurs ne le réalisent. Il est plus ancien que JSON, plus verbeux et plus complexe — mais aussi plus
puissant dans des contextes spécifiques. Voici un guide pratique de ce qu'est réellement XML, comment il fonctionne,
et quand il est encore judicieux de l'utiliser.
XML signifie eXtensible Markup Language (langage de balisage extensible). Le W3C a publié la spécification XML 1.0 en 1998, et il est devenu le format d'échange de données dominant de la première ère du web. La partie « extensible » est essentielle : contrairement à HTML qui possède un ensemble fixe de balises, XML vous permet de définir vos propres balises pour décrire n'importe quelle structure de données dont vous avez besoin.
À quoi ressemble XML
Voici un document XML complet représentant un produit d'une API e-commerce. Cet exemple couvre toutes les fonctionnalités syntaxiques essentielles que vous rencontrerez :
<?xml version="1.0" encoding="UTF-8"?>
<product id="SKU-8821" inStock="true">
<name>Wireless Noise-Cancelling Headphones</name>
<brand>SoundCore</brand>
<price currency="USD">149.99</price>
<categories>
<category>Electronics</category>
<category>Audio</category>
<category>Accessories</category>
</categories>
<specs>
<spec name="battery">30 hours</spec>
<spec name="connectivity">Bluetooth 5.2</spec>
<spec name="weight">250g</spec>
</specs>
<description>
Premium wireless headphones with active noise cancellation,
30-hour battery life, and foldable design.
</description>
</product>Décortiquons les éléments clés. La première ligne est la déclaration XML — elle indique aux parseurs
qu'il s'agit de XML 1.0 encodé en UTF-8. La balise <product> est l'élément racine (chaque
document XML en possède exactement un). Les parties id et inStock sur cette même balise
sont des attributs. Tout ce qui se trouve entre les balises ouvrantes et fermantes est soit des éléments enfants,
des attributs, soit du contenu textuel.
Éléments vs attributs — Une vraie décision de conception
Une chose qui perturbe les nouveaux auteurs XML : vous pouvez représenter les mêmes données sous forme d'élément ou d'attribut. Ces deux représentations sont du XML valide pour la même donnée :
<!-- En tant qu'attribut -->
<price currency="USD">149.99</price>
<!-- En tant qu'élément enfant -->
<price>
<amount>149.99</amount>
<currency>USD</currency>
</price>La sagesse conventionnelle : utilisez les attributs pour les métadonnées de l'élément (identifiants, indicateurs, unités), et utilisez les éléments enfants pour le contenu de données réel — surtout si ce contenu risque de devenir complexe, répété, ou d'avoir besoin de ses propres attributs à l'avenir. Les attributs ne peuvent contenir que du texte brut ; les éléments enfants peuvent contenir n'importe quelle structure XML.
Bien-formé vs valide — Deux normes différentes
XML a deux niveaux de correction souvent confondus :
- Le XML bien-formé respecte les règles syntaxiques de base : un élément racine, toutes les balises correctement fermées, attributs entre guillemets, pas de caractères illégaux. Tout parseur XML peut vérifier cela.
- Le XML valide est conforme à un schéma spécifique — soit une DTD (Document Type Definition), soit un schéma XML (XSD). La vérification de la validité requiert à la fois le document et le schéma. Un XML peut être bien-formé sans être valide par rapport à un schéma particulier.
Où XML apparaît dans le monde réel
- Services web SOAP. La moitié plus ancienne des logiciels d'entreprise tourne encore sur SOAP — API bancaires, systèmes ERP, passerelles de paiement. Chaque message SOAP est un document XML bien défini avec une Envelope, un Header et un Body.
- Flux RSS et Atom. Chaque flux de podcast, flux de site d'actualités et abonnement à une chaîne YouTube est un document XML. RSS 2.0 et Atom sont deux formats basés sur XML qui existent depuis le début des années 2000.
- Images SVG. Scalable Vector Graphics est du XML. Lorsque vous ouvrez un fichier
.svgdans un éditeur de texte, vous lisez du XML. C'est pourquoi vous pouvez styliser des SVG avec CSS et les manipuler avec JavaScript. - Documents Office. Un fichier
.docx,.xlsxou.pptxest une archive ZIP contenant des fichiers XML. Office Open XML est la façon dont Microsoft stocke tous les formats de documents Office modernes. - Layouts Android. Les layouts d'interface utilisateur Android sont définis dans des fichiers XML. Si vous avez fait du développement Android, vous avez beaucoup écrit de XML.
- Maven et pom.xml. Le système de build Maven de Java utilise un fichier
pom.xmlpour définir les dépendances du projet et la configuration de build — familier à tout développeur Java.
Analyser du XML en JavaScript — DOMParser
Dans le navigateur, vous pouvez analyser des chaînes XML en utilisant l'API intégrée
DOMParser.
Cela fonctionne de la même façon que l'analyse HTML :
const xmlString = `<?xml version="1.0"?>
<product id="SKU-8821">
<name>Wireless Headphones</name>
<price currency="USD">149.99</price>
<categories>
<category>Electronics</category>
<category>Audio</category>
</categories>
</product>`;
const parser = new DOMParser();
const doc = parser.parseFromString(xmlString, 'application/xml');
// Vérifier les erreurs d'analyse
const parseError = doc.querySelector('parsererror');
if (parseError) {
console.error('Erreur d'analyse XML :', parseError.textContent);
} else {
const name = doc.querySelector('name').textContent;
const currency = doc.querySelector('price').getAttribute('currency');
const categories = [...doc.querySelectorAll('category')].map(el => el.textContent);
console.log(name); // Wireless Headphones
console.log(currency); // USD
console.log(categories); // ['Electronics', 'Audio']
}Analyser du XML en Python — ElementTree
La bibliothèque standard de Python inclut
xml.etree.ElementTree
— aucun paquet tiers requis pour l'analyse XML de base :
import xml.etree.ElementTree as ET
xml_string = """<?xml version="1.0"?>
<product id="SKU-8821">
<name>Wireless Headphones</name>
<price currency="USD">149.99</price>
<categories>
<category>Electronics</category>
<category>Audio</category>
</categories>
</product>"""
root = ET.fromstring(xml_string)
name = root.find('name').text
currency = root.find('price').get('currency')
categories = [el.text for el in root.findall('categories/category')]
print(name) # Wireless Headphones
print(currency) # USD
print(categories) # ['Electronics', 'Audio']Les pièges qui font trébucher les auteurs XML
- Encodage des entités. Cinq caractères doivent être échappés dans le texte XML et les valeurs d'attributs :
&→&,<→<,>→>,"→",'→'. Oublier d'échapper une esperluette dans une URL brise l'ensemble du document. - Espaces de noms. Le XML avec espaces de noms ressemble à
<soap:Envelope xmlns:soap="...">. Les requêtes sans prise en charge des espaces de noms ne trouveront pas les éléments. C'est l'un des bugs d'analyse XML les plus courants. - Sensibilité aux espaces blancs. Les espaces blancs entre les éléments sont techniquement significatifs en XML (contrairement à HTML). La plupart des parseurs les gèrent raisonnablement, mais cela peut causer des surprises lors de la comparaison de documents.
- Encodage des caractères. La déclaration XML doit correspondre à l'encodage réel du fichier. Un fichier UTF-8 déclaré en ISO-8859-1 sera analysé incorrectement pour tout caractère non-ASCII.
- Pas de type tableau natif. XML n'a pas de tableaux. Vous représentez les listes en répétant des éléments, ce qui signifie que les parseurs retournent des NodeLists plutôt que des tableaux JavaScript — convertissez toujours avec
Array.from()ou le spread.
Outils XML utiles à connaître
Vous travaillez régulièrement avec XML ? Ces outils vous feront gagner du temps : Formateur XML pour afficher joliment les réponses XML minifiées, Validateur XML pour vérifier la bonne forme, XML vers JSON pour convertir les réponses XML en JSON pour une gestion plus facile, et XPath XML pour tester des requêtes XPath sur un document.
Conclusion
XML est verbeux et complexe comparé à JSON, mais ce n'est pas une simple note de bas de page héritée — c'est le fondement de SVG, des documents Office, des flux RSS, des services SOAP et des interfaces Android. Comprendre la distinction élément/attribut, la différence entre XML bien-formé et XML valide, et les pièges courants autour de l'encodage des entités et des espaces de noms vous servira bien chaque fois que XML apparaît dans votre travail. Et il apparaîtra.