Travailler avec XML en TypeScript : bibliothèques, analyse et création de documents XML

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 TypeScript : bibliothèques et exemples pratiques



XML (eXtensible Markup Language) reste un format très demandé pour l'échange de données, les fichiers de configuration et l'intégration avec des systèmes hérités. Malgré la popularité de JSON, de nombreuses solutions d'entreprise, services SOAP et formats de données (par exemple, SVG, RSS, XSLT) utilisent encore XML. En TypeScript, grâce au typage statique, le travail avec XML devient plus fiable et prévisible. Dans cet article, nous examinerons les meilleures bibliothèques pour l'analyse, la création et la validation de documents XML en TypeScript.



Bibliothèques principales pour travailler avec XML en TypeScript



Aujourd'hui, il existe plusieurs bibliothèques matures qui fonctionnent parfaitement avec TypeScript. Examinons les trois plus populaires :



  • fast-xml-parser — la bibliothèque la plus rapide pour analyser XML en JavaScript/TypeScript. Prend en charge la validation, la conversion en JSON et vice versa.
  • xml2js — une bibliothèque classique avec une API simple, convertit XML en objets JavaScript. Dispose d'une prise en charge intégrée de TypeScript via @types/xml2js.
  • xmldom — une implémentation de DOM Level 2 pour Node.js, permet de travailler avec XML comme un arbre DOM (similaire au DOMParser du navigateur).


Installation et configuration



Pour commencer, installez l'une des bibliothèques via npm :



npm install fast-xml-parser xml2js xmldom @types/xml2js


Examinons maintenant des exemples pratiques pour chaque bibliothèque.



Exemple 1 : Analyse XML avec fast-xml-parser



fast-xml-parser offre des performances élevées et une API pratique pour convertir XML en objets TypeScript ordinaires.



import { XMLParser, XMLBuilder, XMLValidator } from 'fast-xml-parser';

// XML sourceconst xmlData = `<?xml version="1.0" encoding="UTF-8"?><catalog> <book id="101"> <title>TypeScript Handbook</title> <author>Microsoft</author> <price currency="USD">29.99</price> </book> <book id="102"> <title>Node.js Design Patterns</title> <author>Mario Casciaro</author> <price currency="EUR">34.50</price> </book></catalog>`;

// Paramètres de l'analyseurconst parser = new XMLParser({ ignoreAttributes: false, // Conserver les attributs attributeNamePrefix: '@_', // Préfixe pour les attributs textNodeName: '#text', // Nom pour les nœuds de texte isArray: (tagName) => ['book'].includes(tagName) // Toujours retourner un tableau pour <book>});

// Analyseconst result = parser.parse(xmlData);console.log(JSON.stringify(result, null, 2));

// Typage du résultatinterface Book { '@_id': string; title: string; author: string; price: { '@_currency': string; '#text': string; };}

interface Catalog { catalog: { book: Book[]; };}

const catalog = result as Catalog;console.log(`Premier livre : ${catalog.catalog.book[0].title}`);


Notez le paramètre isArray — il garantit que l'élément book sera toujours un tableau, même si un seul livre est rencontré dans le XML.



Exemple 2 : Création XML avec xml2js



La bibliothèque xml2js est pratique pour construire du XML à partir d'objets JavaScript. Elle utilise Builder pour la sérialisation.



import { Builder } from 'xml2js';

// Objet à convertir en XMLconst data = { root: { $: { version: '1.0', encoding: 'UTF-8' }, user: [ { $: { id: '1', active: 'true' }, name: 'Ivan Petrov', email: 'ivan@example.com', roles: { role: ['admin', 'editor'] } }, { $: { id: '2', active: 'false' }, name: 'Maria Sidorova', email: 'maria@example.com', roles: { role: ['viewer']

Recommendations