Introdução ao processamento de XML no ambiente Node.js
XML (eXtensible Markup Language) continua sendo um formato requisitado para armazenamento e transmissão de dados estruturados, especialmente em sistemas corporativos, serviços SOAP, arquivos de configuração e soluções de integração. No ecossistema Node.js, existem várias bibliotecas maduras que permitem analisar, criar e modificar documentos XML de forma eficiente. Neste artigo, abordaremos três ferramentas principais: xml2js (para conversão de XML para JSON e vice-versa), fast-xml-parser (parser de alto desempenho) e xmldom (implementação do DOM Level 2 para Node.js).
1. Biblioteca xml2js: simplicidade e versatilidade
xml2js é uma das bibliotecas mais populares para trabalhar com XML em Node.js. Sua principal função é converter XML em objetos JavaScript (JSON) e vice-versa. É a escolha ideal quando você precisa integrar rapidamente dados XML em uma aplicação JavaScript moderna.
Instalação
npm install xml2jsExemplo: parsing de XML para 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('Erro de parsing:', err); return; } console.log(JSON.stringify(result, null, 2)); // Saída: { bookstore: { book: { category: "programming", title: "Learning Node.js", author: "John Doe", price: "29.99" } } }});Exemplo: criação de XML a partir de JSON
const xml2js = require('xml2js');const builder = new xml2js.Builder({ headless: true });
const jsonObj = { root: { $: { xmlns: "http://example.com/ns" }, item: [ { $: { id: "1" }, _: "Primeiro elemento" }, { $: { id: "2" }, _: "Segundo elemento" } ] }};
const xml = builder.buildObject(jsonObj);console.log(xml);/* Saída:<root xmlns="http://example.com/ns"> <item id="1">Primeiro elemento</item> <item id="2">Segundo elemento</item></root>*/Principais recursos:
- Conversão automática de atributos (prefixo
$) e conteúdo textual (prefixo_) - Configuração do parser:
explicitArray,explicitRoot,attrkey,charkey - Suporte a namespaces
- Processamento de arquivos grandes via streams (parsing em fluxo)
2. fast-xml-parser: desempenho e flexibilidade
Se você precisa de máxima velocidade de parsing (por exemplo, ao processar milhares de arquivos XML ou em aplicações em tempo real), considere o fast-xml-parser. Este parser é escrito em JavaScript puro, mas otimizado para alto desempenho.
Instalação
npm install fast-xml-parserExemplo: parsing rápido com validação
const { XMLParser, XMLBuilder, XMLValidator } = require('fast-xml-parser');
const xmlData = `<config> <database host="localhost" port="5432"> <user>admin</user> <password>secret</password> </database></config>`;
// Verificação de validadeconst validationResult = XMLValidator.validate(xmlData);if (validationResult !== true) { console.error('XML inválido:', validationResult.err); process.exit(1);}
// Parsingconst parser = new XMLParser({ ignoreAttributes: false, attributeNamePrefix: "@_"});const jsonObj = parser.parse(xmlData);console.log(jsonObj.config.database["@_host"]); // localhostconsole.log(jsonObj.config.datab Também na biblioteca
Clientes Redis para Kotlin: Lettuce, Redisson e Kredis
Agendador de Tarefas em Go (Golang): cron, gocron e robfig/cron
Trabalho com datas em Kotlin: bibliotecas e ferramentas (Kotlinx-datetime, Joda-Time, java.time)
Trabalhando com CSV em JavaScript (Node.js): bibliotecas, parsing e geração de dados