Travailler avec XML en JavaScript (Node.js) : parsing, création et validation

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

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 xpath


1. 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                    

Recommendations