Traitement et analyse XML en TypeScript : bibliothèques et exemples pratiques

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 : de l'analyse à la génération

XML (eXtensible Markup Language) reste l'un des formats clés pour l'échange de données, les fichiers de configuration et la gestion documentaire. Dans l'écosystème TypeScript, plusieurs bibliothèques puissantes sont disponibles, permettant de travailler efficacement avec XML tout en conservant un typage strict et les avantages de l'analyse statique. Dans cet article, nous examinerons les principaux outils, leurs fonctionnalités et fournirons des exemples pratiques d'utilisation.



Pourquoi utiliser TypeScript pour travailler avec XML ?

TypeScript ajoute un système de types à JavaScript, ce qui est particulièrement utile pour travailler avec des documents XML de structure complexe. Vous pouvez décrire des schémas de données via des interfaces, éviter les erreurs lors de l'accès aux éléments imbriqués et bénéficier automatiquement de l'autocomplétion dans l'IDE. De plus, les bibliothèques modernes pour travailler avec XML disposent de déclarations de types (typage), rendant leur utilisation aussi sûre que possible.



Principales bibliothèques pour travailler avec XML en TypeScript

  • fast-xml-parser — la bibliothèque la plus rapide et la plus fonctionnelle. Prend en charge l'analyse en objet/tableau, la validation, le travail avec les attributs, CDATA et les espaces de noms.
  • xml2js — un analyseur classique qui convertit XML en objets JavaScript. Prend en charge l'analyse asynchrone et les options personnalisées.
  • xmldom — une implémentation d'analyseur DOM pour Node.js et le navigateur. Permet de manipuler l'arbre XML comme dans le DOM du navigateur.
  • xmlbuilder2 — une bibliothèque moderne pour créer des documents XML avec une API chaînée et une prise en charge complète des types.


Installation des bibliothèques

Pour commencer, installez l'une des bibliothèques via npm. Elles disposent toutes de déclarations de types intégrées :

npm install fast-xml-parsernpm install xml2jsnpm install @xmldom/xmldomnpm install xmlbuilder2


Exemple 1 : Analyse XML avec fast-xml-parser

Considérons un exemple de base d'analyse d'une chaîne XML en un objet typé :

import { XMLParser } from 'fast-xml-parser';

interface Book { title: string; author: string; year: number; price?: number;}

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

const xmlData = ` <catalog> <book> <title>TypeScript Handbook</title> <author>Microsoft</author> <year>2023</year> </book> <book> <title>XML for Developers</title> <author>John Doe</author> <year>2022</year> <price>29.99</price> </book> </catalog>`;

const parser = new XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@_', isArray: (name) => name === 'book',});

const result: Catalog = parser.parse(xmlData);console.log(result.catalog.book[0].title); // "TypeScript Handbook"

Notez l'option isArray — elle garantit que l'élément book sera toujours un tableau, même si le XML ne contient qu'un seul livre. Cela simplifie le traitement ultérieur.



Exemple 2 : Création XML avec xmlbuilder2

La bibliothèque xmlbuilder2 fournit une interface chaînée pratique pour générer du XML :

import { create } from 'xmlbuilder2';

interface User { id: number; name: string; email: string;}

const user: User = { id: 42, name: 'Alice', email: 'alice@example.com'};

const doc = create({ version: '1.0', encoding: 'UTF-8' }) .ele('users') .ele('user', { id: user.id.toString() }) .ele('name').txt(user.name).up() .ele('email').txt(user.email).up() .up() .up();

const xmlString: string = doc.end({ prettyPrint: true });console.log(xmlString);/*<?xml version="1.0" encoding="UTF-8"?><users> <user id="42"> <name>Alice</name>

Recommendations