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

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 trabajo con 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, protocolos médicos y API heredadas. En el ecosistema Node.js existen varias bibliotecas maduras que permiten analizar, crear y modificar documentos XML de manera eficiente. En este artículo, exploraremos las herramientas clave: fast-xml-parser, xml2js, xmlbuilder2 y xpath.



Instalación de los paquetes necesarios



Para empezar, instale los paquetes a través de npm:



npm install fast-xml-parser xml2js xmlbuilder2 xpath


1. Análisis de XML con fast-xml-parser



fast-xml-parser es la biblioteca de mayor rendimiento para analizar XML en JavaScript. Soporta atributos, espacios de nombres y conversión a JSON.



Análisis básico



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

const xmlData = `<bookstore> <book category="fiction"> <title lang="en">The Great Gatsby</title> <author>F. Scott Fitzgerald</author> <year>1925</year> </book></bookstore>`;

const parser = new XMLParser({ ignoreAttributes: false, // Conservar atributos attributeNamePrefix: '@_' // Prefijo para atributos});

const result = parser.parse(xmlData);console.log(result.bookstore.book[0].title);// 'The Great Gatsby'console.log(result.bookstore.book[0]['@_category']);// 'fiction'


Análisis con verificación de errores



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

const invalidXml = '<root><item>Unclosed';

if (XMLValidator.validate(invalidXml) === true) { const parser = new XMLParser(); const data = parser.parse(invalidXml);} else { console.error('XML no válido'); // Salida: true (si es válido) u objeto de error}


2. Biblioteca xml2js — conversión conveniente a JSON



xml2js proporciona una API basada en callbacks y soporta configuraciones personalizadas de análisis.



const xml2js = require('xml2js');const parser = new xml2js.Parser({    explicitArray: false, // No envolver elementos individuales en un array    attrkey: 'attributes'});

const xml = `<person id="123"> <name>John Doe</name> <age>30</age></person>`;

parser.parseString(xml, (err, result) => { if (err) { console.error('Error de análisis:', err); return; } console.log(result.person.name); // 'John Doe' console.log(result.person.attributes.id); // '123'});


Envoltorio de promesa para xml2js



const { parseStringPromise } = require('xml2js');

async function parseXML(xmlString) { try { const data = await parseStringPromise(xmlString, { explicitArray: false }); return data; } catch (error) { console.error('Error:', error.message); }}


3. Creación de XML con xmlbuilder2



xmlbuilder2 es una biblioteca moderna para generar documentos XML con una interfaz encadenada (fluent API).



Creación simple de XML



const { create } = require('xmlbuilder2');

const doc = create({ version: '1.0', encoding: 'UTF-8' }) .ele('catalog') .ele('book', { id: 'b1' }) .ele('title').txt('JavaScript: The Good Parts').up() .ele('author').txt('Douglas Crockford').up() .ele('price', { currency: 'USD' }).txt('29.99').up() .up() .end({ prettyPrint: true });

console.log(doc);


Resultado:



<?xml version="1.0" encoding="UTF-8"?><catalog>  <book id="b1">    &l                    

Recommendations