Guia de conversão XML e JSON: Transformação de arquivos de configuração e formatos de dados API

JSON

Diferenças principais: XML vs JSON

Característica XML JSON
Formato de dados Marcação baseada em tags Pares chave-valor
Atributos Sim (<node attr="val">) Não (atributos viram campos)
Namespaces Sim (xmlns) Não
Comentários Sim (<!-- -->) Não
Arrays Implícitos (elementos repetidos) Explícitos ([])
Nós de texto Conteúdo misto (tags + texto) Valores de string simples

XML é melhor para dados estilo documento (SVG, HTML, configurações). JSON é melhor para dados estruturados (respostas de API).


Como atributos XML mapeiam para JSON

Elementos XML podem ter tanto atributos quanto conteúdo de texto—esta é a parte complicada da conversão:

Elemento simples

<person name="John" age="30"/>
{
  "person": {
    "@name": "John",
    "@age": "30"
  }
}

Convenção: use o prefixo @ para atributos XML. Esta é a regra de conversão mais comum.

Conteúdo misto (Atributos + Texto)

<price currency="USD">68.00</price>
{
  "price": {
    "@currency": "USD",
    "#text": "68.00"
  }
}

Use #text para o conteúdo de texto do elemento, distinguindo-o dos atributos.


Detecção de arrays: O problema mais comum

Em XML, arrays são implícitos—elementos repetidos com o mesmo nome formam um array:

<books>
  <book>Three-Body Problem</book>
  <book>To Live</book>
</books>
{
  "books": {
    "book": ["Three-Body Problem", "To Live"]
  }
}

Problema: Com um único elemento, XML não pode distingui-lo de um não-array:

<books>
  <book>Three-Body Problem</book>
</books>

Isso pode converter para:

{
  "books": {
    "book": "Three-Body Problem"
  }
}

Solução: Na ferramenta XML↔JSON, marque "Forçar array" e especifique quais elementos devem sempre ser tratados como arrays.


Tratamento de namespaces

Namespaces XML não têm equivalente direto em JSON:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
  <soap:Body>
    <m:GetPrice xmlns:m="http://example.com">
      <m:Item>123</m:Item>
    </m:GetPrice>
  </soap:Body>
</soap:Envelope>

Estratégias comuns:

Estratégia Descrição Caso de uso
Manter prefixo soap:Body"soap:Body" Processamento SOAP/WSDL
Remover prefixo soap:Body"Body" Casos simples, sem conflitos
Chave de namespace {soap}Body Necessidade de distinguir elementos de mesmo nome de namespaces diferentes

Use o Formatador XML para organizar o XML antes da conversão.


Usando a ferramenta XML↔JSON

Etapa 1: Abrir a ferramenta

Visite a ferramenta XML↔JSON e selecione a direção de conversão.

Etapa 2: Inserir dados de origem

  • XML → JSON: Cole a string XML
  • JSON → XML: Cole a string JSON

Você pode embelezar a entrada primeiro com Formatador JSON ou Formatador XML.

Etapa 3: Configurar opções de conversão

Opção Descrição
Prefixo de atributo Mapear atributos como @attr ou $attr
Chave de nó de texto Mapear conteúdo de texto como #text ou _text
Forçar array Especificar nomes de elementos que sempre devem ser arrays
Namespaces Manter / remover / transformar

Etapa 4: Executar conversão

Clique em "Converter", revise o resultado e copie.


Cenários práticos

Migração de arquivos de configuração

Muitos projetos legados usam configurações XML (Spring, Maven). Projetos novos preferem YAML/JSON:

pom.xml → package.json (informações de dependências)
spring-config.xml → application.json (configuração de Beans)

SOAP API para REST

Respostas SOAP são XML; precisam de conversão para JSON para uso no front-end:

Resposta XML SOAP → JSON → renderização front-end

Extração de metadados SVG

SVG é formato XML; extraia metadados para JSON para processamento programático:

<svg width="100" height="100"> → {"svg": {"@width": "100", "@height": "100"}}

Considerações de JSON para XML

Ao converter JSON para XML, observe:

Consideração Descrição
Elemento raiz JSON deve ter uma única chave raiz
Validade do nome da chave Nomes de tags XML não podem começar com dígito ou conter espaços
Envoltório de arrays Arrays JSON precisam de um nome de elemento wrapper
Caracteres especiais <, >, & devem ser escapados como entidades

Problemas comuns

Problema Causa Solução
Elemento único não convertido em array XML não distingue elemento único de array Marque "Forçar array"
Atributos perdidos Regras de conversão sem prefixo de atributo Verifique a configuração de prefixo de atributo
Conflito de namespaces Elementos de mesmo nome em namespaces diferentes Mantenha os prefixos de namespaces
Erro de JSON para XML Nome de chave inválido Renomeie a chave para cumprir a especificação XML
Conteúdo misto perdido Chave de nó de texto não mapeada corretamente Verifique a configuração #text

Resumo

A conversão XML↔JSON é uma necessidade comum em migração de formatos de dados e integração de APIs. Compreender os três problemas principais—mapeamento de atributos, detecção de arrays e namespaces—é chave para uma conversão correta. A ferramenta XML↔JSON fornece opções de conversão flexíveis, enquanto Formatador JSON e Formatador XML completam seu fluxo de trabalho de conversão de formatos.

#XML#JSON#格式转换#API#配置