Introduction au travail avec XML dans l'environnement Node.js
XML (eXtensible Markup Language) reste un format très demandé pour le stockage et la transmission de données structurées, en particulier dans les systèmes d'entreprise, les protocoles médicaux et les API héritées. Dans l'écosystème Node.js, il existe plusieurs bibliothèques matures permettant d'analyser, créer et modifier efficacement des documents XML. Dans cet article, nous examinerons les outils clés : fast-xml-parser, xml2js, xmlbuilder2 et xpath.
Installation des paquets nécessaires
Pour commencer, installez les paquets via npm :
npm install fast-xml-parser xml2js xmlbuilder2 xpath1. Parsing XML avec fast-xml-parser
fast-xml-parser est la bibliothèque la plus performante pour analyser du XML en JavaScript. Elle prend en charge les attributs, les espaces de noms et la conversion en JSON.
Parsing de base
const { XMLParser } = require('fast-xml-parser');
const xmlData = `<bookstore> <book category="fiction"> <title lang="en">The Great Gatsby</title> <author>F. Scott Fitzgerald</author> <year>1925</year> </book></bookstore>`;
const parser = new XMLParser({ ignoreAttributes: false, // Conserver les attributs attributeNamePrefix: '@_' // Préfixe pour les attributs});
const result = parser.parse(xmlData);console.log(result.bookstore.book[0].title);// 'The Great Gatsby'console.log(result.bookstore.book[0]['@_category']);// 'fiction'Parsing avec vérification des erreurs
const { XMLParser, XMLValidator } = require('fast-xml-parser');
const invalidXml = '<root><item>Unclosed';
if (XMLValidator.validate(invalidXml) === true) { const parser = new XMLParser(); const data = parser.parse(invalidXml);} else { console.error('XML invalide'); // Sortie : true (si valide) ou objet d'erreur}2. Bibliothèque xml2js — conversion pratique en JSON
xml2js fournit une API orientée callback et prend en charge les options de parsing personnalisées.
const xml2js = require('xml2js');const parser = new xml2js.Parser({ explicitArray: false, // Les éléments uniques ne sont pas enveloppés dans un tableau attrkey: 'attributes'});
const xml = `<person id="123"> <name>John Doe</name> <age>30</age></person>`;
parser.parseString(xml, (err, result) => { if (err) { console.error('Erreur de parsing :', err); return; } console.log(result.person.name); // 'John Doe' console.log(result.person.attributes.id); // '123'});Wrapper Promise pour xml2js
const { parseStringPromise } = require('xml2js');
async function parseXML(xmlString) { try { const data = await parseStringPromise(xmlString, { explicitArray: false }); return data; } catch (error) { console.error('Erreur :', error.message); }}3. Création de XML avec xmlbuilder2
xmlbuilder2 est une bibliothèque moderne pour la génération de documents XML avec une interface chaînée (fluent API).
Création simple de XML
const { create } = require('xmlbuilder2');
const doc = create({ version: '1.0', encoding: 'UTF-8' }) .ele('catalog') .ele('book', { id: 'b1' }) .ele('title').txt('JavaScript: The Good Parts').up() .ele('author').txt('Douglas Crockford').up() .ele('price', { currency: 'USD' }).txt('29.99').up() .up() .end({ prettyPrint: true });
console.log(doc);Résultat :
<?xml version="1.0" encoding="UTF-8"?><catalog> <book id="b1"> &l Aussi dans la bibliothèque
Travail avec les dates en Swift (iOS/macOS) : bibliothèques et frameworks
Travailler avec Markdown en Java : bibliothèques, analyseurs et exemples
Alamofire pour Swift : guide complet avec exemples
Autorisation et authentification en TypeScript : guide complet
ORM pour Swift (iOS/macOS) : comparaison et exemples d'utilisation