Trabalhando com XML em JavaScript (Node.js): bibliotecas, parsing e criação
XML (eXtensible Markup Language) continua sendo um formato popular para troca de dados em sistemas corporativos, arquivos de configuração e APIs legadas. No ecossistema Node.js, existem várias bibliotecas maduras que permitem analisar, criar e transformar documentos XML de forma eficiente. Neste artigo, veremos as três bibliotecas mais populares: fast-xml-parser, xml2js e libxmljs, além de mostrar exemplos práticos de seu uso.
1. fast-xml-parser — um parser rápido e seguro
fast-xml-parser é uma das bibliotecas mais performáticas para trabalhar com XML em Node.js. Ela suporta parsing síncrono e assíncrono, além de validar documentos XML com esquemas XSD.
Instalação
npm install fast-xml-parserExemplo de parsing de XML para 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));A configuração ignoreAttributes: false permite preservar os atributos das tags XML, e attributeNamePrefix adiciona um prefixo aos nomes dos atributos para evitar conflitos com tags comuns.
Criação de XML a partir de um 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 — um conversor simples e confiável
xml2js é uma biblioteca clássica para converter XML em JSON e vice-versa. Ela oferece uma API simples e é bem documentada.
Instalação
npm install xml2jsParsing de XML com tratamento de erros
const xml2js = require('xml2js');const fs = require('fs');
const parser = new xml2js.Parser({ explicitArray: false, // não agrupar elementos únicos em arrays trim: true, normalizeTags: true // normalizar maiúsculas/minúsculas das tags});
fs.readFile('config.xml', 'utf-8', (err, data) => { if (err) { console.error('Erro ao ler o arquivo:', err); return; } parser.parseString(data, (parseErr, result) => { if (parseErr) { console.error('Erro ao fazer parsing do XML:', parseErr); return; } console.log('Parâmetros de configuração:', result.configuration); });});Criação de XML com 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: 'João Pedro', email: 'joao@example.com' } } }};
const xml = builder.buildObject(obj);console.log(xml);3. libxmljs — para trabalho avançado com XML
l
Também na biblioteca
TypeStack/class-validator para TypeScript: guia completo com exemplos
Serialização de objetos em Rust: serde, bincode, JSON e YAML
Geração de PDF em Swift: criação de documentos para iOS e macOS