§

Entrada

Modo
§

Saída

As equipas em Portugal e no Brasil fazem a ponte entre XML e JSON todos os dias, geralmente porque as duas metades de uma stack discordam sobre o formato. Os serviços da Sefaz (NF-e, CT-e, MDF-e) devolvem envelopes SOAP XML que as aplicações React querem como JSON. O Banco do Brasil e o Itaú Unibanco mantêm APIs SOAP legadas que não serão aposentadas tão cedo. Do lado dos dados, os manifestos de envio dos Correios, as submissões da Receita Federal e os ficheiros SPED chegam como XML que os engenheiros remodelam em JSON antes de carregar para BigQuery ou Snowflake. A correção é a mesma em todos os casos: um conversor rápido e local que pode reutilizar num payload fresco sem o enviar para lado nenhum.

O que é a conversão XML ↔ JSON?

XML (Extensible Markup Language) é um formato de texto baseado em tags para dados hierárquicos. Encontra-o em serviços web SOAP, feeds RSS e Atom, registos de saúde HL7 FHIR, ficheiros sitemap.xml e os ficheiros de configuração que acompanham Maven, Spring e Android Gradle. JSON (JavaScript Object Notation, definido pelo RFC 8259) descreve o mesmo tipo de dados aninhados, mas com chaves e arrays em vez de tags de abertura e fechamento. JSON é o que quase todas as APIs REST usam hoje, e é a forma de valor nativa de todos os runtimes de navegador. Converter entre os dois formatos é um daqueles trabalhos que parece trivial até se deparar com atributos, conteúdo misto, filhos repetidos e CDATA. Uma regex personalizada é a resposta errada; um analisador real é a correta. Esta ferramenta inclui um analisador real (fast-xml-parser) e corre-o no seu navegador, para que possa colar um envelope XML devolvido por um serviço SOAP legado e vê-lo tornar-se um objeto JSON que pode colocar diretamente num store Redux, ou pegar num payload JSON que montou num cliente REST e transformá-lo de volta na forma XML que um endpoint empresarial ainda espera.

Como funciona o mapeamento XML ↔ JSON?

Cada conversão corre localmente no seu navegador usando a biblioteca fast-xml-parser incluída (MIT, versão 4.x). As regras de mapeamento de alto nível são:

  1. Elemento para chave: cada nome de elemento XML torna-se uma chave de objeto JSON. <user><name>Alice</name></user> mapeia para {"user":{"name":"Alice"}}.
  2. Atributo para chave com prefixo: um atributo é armazenado sob uma chave formada ao adicionar o prefixo escolhido. Com o prefixo @, <user id="1"> produz {"user":{"@id":"1"}}.
  3. Conteúdo de texto para chave de nó de texto: quando um elemento tem atributos e texto, o texto fica sob a chave de nó de texto escolhida. <price currency="USD">9.99</price> com a chave #text produz {"price":{"@currency":"USD","#text":"9.99"}}.
  4. Filhos repetidos para array: quando Forçar array para tags filhas repetidas está ativo, múltiplos elementos irmãos com o mesmo nome colapsam num array JSON. <items><item>A</item><item>B</item></items> torna-se {"items":{"item":["A","B"]}}.
  5. Secções CDATA: o texto em bruto dentro de <![CDATA[…]]> é preservado sob a chave #cdata para que os ângulos e o e comercial não sejam re-escapados durante a ida e volta.
  6. JSON para XML inverte o mapeamento: as chaves de objeto tornam-se elementos, as chaves com prefixo tornam-se atributos e os arrays expandem-se em elementos irmãos repetidos.

Por que converter XML e JSON com esta ferramenta?

  • Os seus dados ficam na sua máquina. Cada análise e cada construção corre no contexto JavaScript desta página. Pacotes FHIR de pacientes, envelopes de autenticação SOAP, ficheiros de configuração proprietários, exportações de faturação — nada disto toca nos nossos servidores, porque não há passo de upload no caminho de código. Abra o painel de rede e veja.
  • SOAP legado num front-end que prefere REST é o pedido mais comum que recebemos. Um banco ou seguradora expõe um endpoint SOAP que não será desativado tão cedo; a aplicação React ou Vue que o chama não quer aprender XML. Cole o envelope, obtenha o JSON de volta com atributos com prefixo e namespaces preservados, coloque o conteúdo do Body no seu store de estado.
  • Os consumidores de RSS, Atom e sitemaps também beneficiam. Um diretório de podcasts, um agregador de notícias ou um dashboard interno que ingere sitemap.xml pode evitar escrever um analisador XML completamente. Converta o feed uma vez, trabalhe com o array JSON e o código do seu cliente fica no idioma que já fala.
  • A exportação de configuração completa a lista. Maven, Spring, Android Gradle e builds Ant à moda antiga emitem XML; as ferramentas cloud-native do outro lado (Terraform, Ansible, GitHub Actions, cloud-init) lêem JSON ou YAML. Converta no navegador em vez de executar um script Python com uma dependência de terceiros, especialmente útil em ambientes sem acesso à internet onde colar num serviço web desconhecido não é opção.

Quais são as aplicações comuns da conversão XML ↔ JSON?

A ponte entre XML e JSON aparece em engenharia de integração, ferramentas de API e engenharia de dados. Alguns padrões dominam o trabalho:

  • Ponte SOAP para REST: extrair o payload Body de um envelope SOAP devolvido por uma API bancária ou de seguros legada e convertê-lo para JSON para que um front-end React ou Vue o possa consumir sem uma camada de proxy do lado do servidor à frente.
  • Registos de saúde FHIR: converter pacotes XML FHIR HL7 (o formato exigido pelo Ministério da Saúde e pelo NHS Digital para troca de dados clínicos) para JSON para carregamento numa coleção MongoDB Atlas ou numa coluna JSONB PostgreSQL onde os analistas os podem consultar.
  • Processamento de sitemaps e feeds: transformar um sitemap.xml ou um feed RSS/Atom num array JSON para que um indexador personalizado, um bot do Slack ou um widget de dashboard possa iterar as entradas sem incluir um analisador XML como dependência.

Como fica uma ida e volta XML ↔ JSON?

Tome um exemplo pequeno. Cole <user id="1"><name>Alice</name></user> na entrada, defina o prefixo de atributo como @, deixe o modo em XML para JSON e prima Converter. A saída é {"user":{"@id":"1","name":"Alice"}}. Mude o modo para JSON para XML, cole esse JSON de volta, defina a indentação para 2 espaços e prima Converter novamente. Obterá <user id="1">\n <name>Alice</name>\n</user>, estruturalmente idêntico ao original. A única coisa não garantida na ida e volta é a ordem dos atributos, porque as chaves de objetos JSON não têm ordem definida pela especificação.

Este conversor XML ↔ JSON inclui o fast-xml-parser@4 na mesma origem, trata atributos, CDATA, tags filhas repetidas e prefixos de namespace, e continua a funcionar offline assim que a página tiver sido carregada. Sem passo de upload, sem proxy CDN, sem beacon de análise, sem telemetria de qualquer tipo. Cada byte de entrada e saída fica no seu navegador, o que é exatamente o que pretende quando o payload é um pacote FHIR de paciente, um envelope de autenticação SOAP ou qualquer outra forma de dados que ninguém fora da sua equipa deveria alguma vez ver.