Guia de conversão XML e JSON: Transformação de arquivos de configuração e formatos de dados API
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
#textpara 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.