Travailler avec XML en JavaScript (Node.js) : bibliothèques, analyse et création
XML (eXtensible Markup Language) reste un format très demandé pour l'échange de données dans les systèmes d'entreprise, les fichiers de configuration et les API héritées. Dans l'écosystème Node.js, il existe plusieurs bibliothèques matures permettant d'analyser, créer et transformer efficacement des documents XML. Dans cet article, nous examinerons les trois bibliothèques les plus populaires : fast-xml-parser, xml2js et libxmljs, et montrerons des exemples pratiques de leur utilisation.
1. fast-xml-parser — un analyseur rapide et sécurisé
fast-xml-parser est l'une des bibliothèques les plus performantes pour travailler avec XML dans Node.js. Elle prend en charge l'analyse synchrone et asynchrone, et peut également valider des documents XML par rapport à des schémas XSD.
Installation
npm install fast-xml-parserExemple d'analyse XML en objet JavaScript
const { XMLParser } = require('fast-xml-parser');
const xmlData = `<?xml version="1.0" encoding="UTF-8"?><bookstore> <book category="programming"> <title lang="en">JavaScript: The Good Parts</title> <author>Douglas Crockford</author> <year>2008</year> <price>29.99</price> </book></bookstore>`;
const parser = new XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@_'});
const result = parser.parse(xmlData);console.log(JSON.stringify(result, null, 2));Le paramètre ignoreAttributes: false permet de conserver les attributs des balises XML, et attributeNamePrefix ajoute un préfixe aux noms d'attributs pour éviter les conflits avec les balises normales.
Création de XML à partir d'un objet
const { XMLBuilder } = require('fast-xml-parser');
const builder = new XMLBuilder({ format: true, ignoreAttributes: false});
const obj = { bookstore: { book: { '@_category': 'programming', title: { '@_lang': 'en', '#text': 'Clean Code' }, author: 'Robert C. Martin', year: 2008, price: 39.99 } }};
const xmlOutput = builder.build(obj);console.log(xmlOutput);2. xml2js — un convertisseur simple et fiable
xml2js est une bibliothèque classique pour convertir XML en JSON et vice versa. Elle offre une API simple et est bien documentée.
Installation
npm install xml2jsAnalyse XML avec gestion des erreurs
const xml2js = require('xml2js');const fs = require('fs');
const parser = new xml2js.Parser({ explicitArray: false, // ne pas encapsuler les éléments uniques dans des tableaux trim: true, normalizeTags: true // normaliser la casse des balises});
fs.readFile('config.xml', 'utf-8', (err, data) => { if (err) { console.error('Erreur de lecture du fichier :', err); return; } parser.parseString(data, (parseErr, result) => { if (parseErr) { console.error('Erreur d'analyse XML :', parseErr); return; } console.log('Paramètres de configuration :', result.configuration); });});Création de XML avec xml2js
const xml2js = require('xml2js');
const builder = new xml2js.Builder({ xmldec: { version: '1.0', encoding: 'UTF-8' }, renderOpts: { pretty: true, indent: ' ' }});
const obj = { response: { status: 'success', data: { user: { id: 123, name: 'Ivan Petrov', email: 'ivan@example.com' } } }};
const xml = builder.buildObject(obj);console.log(xml);3. libxmljs — pour un travail avancé avec XML
l