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 xml2jsEjemplo: 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-parserEjemplo: 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 También en la biblioteca
Trabajo con Excel en Kotlin: bibliotecas Apache POI y Apache POI para Kotlin
Criptografía en Rust con la librería RustCrypto
Bibliotecas GraphQL para Kotlin: guía completa para desarrolladores backend