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

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

Introducción al procesamiento de XML en el entorno Node.js

XML (eXtensible Markup Language) sigue siendo un formato demandado para almacenar y transmitir datos estructurados, especialmente en sistemas corporativos, servicios SOAP, archivos de configuración y soluciones de integración. En el ecosistema de Node.js existen varias bibliotecas maduras que permiten analizar, crear y modificar documentos XML de manera eficiente. En este artículo revisaremos tres herramientas principales: xml2js (para convertir XML a JSON y viceversa), fast-xml-parser (analizador de alto rendimiento) y xmldom (implementación de DOM Level 2 para Node.js).



1. Biblioteca xml2js: simplicidad y versatilidad

xml2js es una de las bibliotecas más populares para trabajar con XML en Node.js. Su tarea principal es transformar XML en objetos de JavaScript (JSON) y viceversa. Es la opción ideal cuando necesitas integrar rápidamente datos XML en una aplicación moderna de JavaScript.



Instalación

npm install xml2js


Ejemplo: análisis de XML a JSON

const xml2js = require('xml2js');const parser = new xml2js.Parser({ explicitArray: false });

const xmlData = `<bookstore> <book category="programming"> <title lang="en">Learning Node.js</title> <author>John Doe</author> <price>29.99</price> </book></bookstore>`;

parser.parseString(xmlData, (err, result) => { if (err) { console.error('Error de análisis:', err); return; } console.log(JSON.stringify(result, null, 2)); // Salida: { bookstore: { book: { category: "programming", title: "Learning Node.js", author: "John Doe", price: "29.99" } } }});


Ejemplo: creación de XML desde JSON

const xml2js = require('xml2js');const builder = new xml2js.Builder({ headless: true });

const jsonObj = { root: { $: { xmlns: "http://example.com/ns" }, item: [ { $: { id: "1" }, _: "Primer elemento" }, { $: { id: "2" }, _: "Segundo elemento" } ] }};

const xml = builder.buildObject(jsonObj);console.log(xml);/* Salida:<root xmlns="http://example.com/ns"> <item id="1">Primer elemento</item> <item id="2">Segundo elemento</item></root>*/


Funcionalidades clave:

  • Conversión automática de atributos (prefijo $) y contenido de texto (prefijo _)
  • Configuración del analizador: explicitArray, explicitRoot, attrkey, charkey
  • Soporte para espacios de nombres (namespaces)
  • Procesamiento de archivos grandes mediante streams (análisis por flujo)


2. fast-xml-parser: rendimiento y flexibilidad

Si necesitas la máxima velocidad de análisis (por ejemplo, al procesar miles de archivos XML o en aplicaciones en tiempo real), presta atención a fast-xml-parser. Este analizador está escrito en JavaScript puro, pero optimizado para un alto rendimiento.



Instalación

npm install fast-xml-parser


Ejemplo: análisis rápido con validación

const { XMLParser, XMLBuilder, XMLValidator } = require('fast-xml-parser');

const xmlData = `<config> <database host="localhost" port="5432"> <user>admin</user> <password>secret</password> </database></config>`;

// Verificación de validezconst validationResult = XMLValidator.validate(xmlData);if (validationResult !== true) { console.error('XML no válido:', validationResult.err); process.exit(1);}

// Análisisconst parser = new XMLParser({ ignoreAttributes: false, attributeNamePrefix: "@_"});const jsonObj = parser.parse(xmlData);console.log(jsonObj.config.database["@_host"]); // localhostconsole.log(jsonObj.config.datab

Recommendations