Trabajo con XML en JavaScript (Node.js): bibliotecas y ejemplos

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

Trabajo con XML en JavaScript (Node.js): bibliotecas, análisis y creación



XML (eXtensible Markup Language) sigue siendo un formato demandado para el intercambio de datos en sistemas corporativos, archivos de configuración y API heredadas. En el ecosistema de Node.js existen varias bibliotecas maduras que permiten analizar, crear y transformar documentos XML de manera eficiente. En este artículo, revisaremos las tres bibliotecas más populares: fast-xml-parser, xml2js y libxmljs, y mostraremos ejemplos prácticos de su uso.



1. fast-xml-parser — analizador rápido y seguro



fast-xml-parser es una de las bibliotecas más eficientes para trabajar con XML en Node.js. Soporta tanto análisis síncrono como asíncrono, y también puede validar documentos XML contra esquemas XSD.



Instalación

npm install fast-xml-parser


Ejemplo de análisis de XML a objeto 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));


La configuración ignoreAttributes: false permite conservar los atributos de las etiquetas XML, y attributeNamePrefix añade un prefijo a los nombres de los atributos para evitar conflictos con las etiquetas normales.



Creación de XML a partir de un objeto

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 — convertidor simple y confiable



xml2js es una biblioteca clásica para convertir XML a JSON y viceversa. Proporciona una API simple y está bien documentada.



Instalación

npm install xml2js


Análisis de XML con manejo de errores

const xml2js = require('xml2js');const fs = require('fs');

const parser = new xml2js.Parser({ explicitArray: false, // no envolver elementos individuales en arrays trim: true, normalizeTags: true // normalizar mayúsculas/minúsculas de las etiquetas});

fs.readFile('config.xml', 'utf-8', (err, data) => { if (err) { console.error('Error al leer el archivo:', err); return; } parser.parseString(data, (parseErr, result) => { if (parseErr) { console.error('Error al analizar XML:', parseErr); return; } console.log('Parámetros de configuración:', result.configuration); });});


Creación de XML con 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: 'Iván Petrov', email: 'ivan@example.com' } } }};

const xml = builder.buildObject(obj);console.log(xml);


3. libxmljs — para trabajo avanzado con XML



l

Recommendations