Procesamiento y análisis de XML en TypeScript: bibliotecas y ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajar con XML en TypeScript: desde el análisis hasta la generación

XML (eXtensible Markup Language) sigue siendo uno de los formatos clave para el intercambio de datos, archivos de configuración y flujo de documentos. En el ecosistema de TypeScript hay varias bibliotecas potentes disponibles que permiten trabajar eficientemente con XML, manteniendo una tipificación estricta y las ventajas del análisis estático. En este artículo, revisaremos las herramientas principales, sus capacidades y proporcionaremos ejemplos prácticos de uso.



¿Por qué usar TypeScript para trabajar con XML?

TypeScript añade un sistema de tipos a JavaScript, lo que es especialmente útil al trabajar con documentos XML de estructura compleja. Puedes describir esquemas de datos mediante interfaces, evitar errores al acceder a elementos anidados y obtener autocompletado automáticamente en el IDE. Además, las bibliotecas modernas para trabajar con XML tienen declaraciones de tipos (tipificación), lo que hace que su uso sea extremadamente seguro.



Bibliotecas principales para trabajar con XML en TypeScript

  • fast-xml-parser — la biblioteca más rápida y funcional. Soporta análisis a objeto/array, validación, trabajo con atributos, CDATA y espacios de nombres.
  • xml2js — el analizador clásico que convierte XML en objetos de JavaScript. Tiene soporte para análisis asíncrono y opciones personalizadas.
  • xmldom — una implementación del analizador DOM para Node.js y el navegador. Permite manipular el árbol XML como en el DOM del navegador.
  • xmlbuilder2 — una biblioteca moderna para crear documentos XML con una API encadenada y soporte completo de tipos.


Instalación de bibliotecas

Para empezar, instala una de las bibliotecas a través de npm. Todas tienen declaraciones de tipos integradas:

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


Ejemplo 1: Análisis de XML con fast-xml-parser

Veamos un ejemplo básico de cómo analizar una cadena XML en un objeto tipificado:

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"

Observa la opción isArray — garantiza que el elemento book siempre sea un array, incluso si solo hay un libro en el XML. Esto simplifica el procesamiento posterior.



Ejemplo 2: Creación de XML con xmlbuilder2

La biblioteca xmlbuilder2 proporciona una interfaz encadenada conveniente para generar 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