Trabalhando com XML em TypeScript: bibliotecas para parsing e criação de XML

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com XML em TypeScript: visão geral das bibliotecas e exemplos práticos



XML (eXtensible Markup Language) continua sendo um formato popular para troca de dados em sistemas corporativos, arquivos de configuração e serviços web (SOAP, RSS/Atom). Em TypeScript, graças à tipagem estática, trabalhar com XML se torna mais seguro e previsível. Neste artigo, veremos três bibliotecas principais para trabalhar com XML em TypeScript: fast-xml-parser, xml2js e xmlbuilder2. Você aprenderá como fazer parsing de XML, criar documentos XML e validar sua estrutura.



1. Instalação e configuração



Para começar, instale uma ou mais bibliotecas via npm:



npm install fast-xml-parser xml2js xmlbuilder2npm install -D @types/xml2js  // tipos para xml2js (para fast-xml-parser os tipos são embutidos)


2. Parsing de XML com fast-xml-parser



fast-xml-parser é a biblioteca mais rápida para parsing de XML em JavaScript/TypeScript. Ela suporta trabalho com atributos, namespaces e pode converter XML para JSON.



Parsing básico



import { XMLParser } from 'fast-xml-parser';

const xmlString = `<bookstore> <book category="fiction"> <title>Guerra e Paz</title> <author>Liev Tolstói</author> <price currency="RUB">1200</price> </book></bookstore>`;

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

const result = parser.parse(xmlString);console.log(result);


O resultado será um objeto:



{  bookstore: {    book: {      '@_category': 'fiction',      title: 'Guerra e Paz',      author: 'Liev Tolstói',      price: {        '@_currency': 'RUB',        '#text': '1200'      }    }  }}


Parsing com tipagem



interface Book {  '@_category': string;  title: string;  author: string;  price: {    '@_currency': string;    '#text': number;  };}

interface Bookstore { bookstore: { book: Book | Book[]; };}

const typedResult = parser.parse(xmlString) as Bookstore;console.log(typedResult.bookstore.book);


3. Parsing de XML com xml2js



xml2js é uma biblioteca com recursos mais avançados, incluindo suporte a funções de processamento e transformações personalizadas. Ela funciona de forma assíncrona.



Parsing assíncrono



import { parseStringPromise } from 'xml2js';

interface XmlBook { $: { category: string }; title: string[]; author: string[]; price: Array<{ $: { currency: string }, _: string }>;}

async function parseXmlData(xml: string): Promise<void> { try { const result = await parseStringPromise(xml, { explicitArray: false, // não agrupar elementos únicos em arrays attrkey: '$', // chave para atributos charkey: '_' // chave para conteúdo textual }); const book = result.bookstore.book as XmlBook; console.log(`Livro: ${book.title}, autor: ${book.author}`); console.log(`Preço: ${book.price._} ${book.price.$.currency}`); } catch (error) { console.error('Erro ao fazer parsing do XML:', error); }}

parseXmlData(xmlString);


4. Criação de XML com xmlbuilder2



xmlbuilder2 é uma biblioteca moderna para criação de documentos XML com suporte a TypeScript. Ela fornece uma API encadeada e escape automático.



Criação de XML simples



import { create } from 'xmlbuilder2';

const xml = create({ version: '1.0', encoding: 'UTF-8' }) .ele('catalog') .ele('book', { id: '1', category: 'fiction' }) .ele('title').txt('Crime e Castigo').up() .ele('author').tx

Recommendations