Ir para o conteúdo
jsonbeautifiers
Português

JSON para XML

XML bem formado com a raiz que você escolher, atributos e escape correto.

JSON
XML

Nada do que você cola sai do seu navegador. A lista de permissões connect-src transforma isso em uma garantia do navegador, e não em uma promessa. Confira você mesmo

Converta JSON para XML bem formado, com o elemento raiz que você escolher, suporte a atributos e escape correto.

Os dois modelos de dados não batem exatamente, então esta conversão faz escolhas. Elas estão listadas aqui e são reportadas nas notas de saída quando se aplicam ao seu documento.

Como o mapeamento funciona

Chaves de objeto viram elementos
Uma chave "name" vira um elemento <name>.
Uma chave com prefixo @ vira atributo
{"@id": "1"} vira id="1" no elemento que a contém.
Uma chave #text vira o texto do elemento
É assim que se produz um elemento que tem atributos e conteúdo ao mesmo tempo.
Arrays repetem o elemento
É assim que o XML expressa uma lista. Não existe um elemento invólucro separado a menos que você construa um.
null vira xsi:nil
A convenção do XML Schema. Um elemento vazio seria indistinguível de uma string vazia.

Nomes de chave que não são nomes XML válidos

Nomes de elemento XML não podem começar com dígito nem conter espaços ou a maior parte da pontuação. Chaves JSON fazem as duas coisas o tempo todo. Essas chaves são reescritas com sublinhados, e a conversão avisa que isso aconteceu em vez de fazer caladamente, porque converter de volta não vai restaurar os nomes originais.

O que o XML tem e o JSON não

Namespaces, instruções de processamento, uma linguagem de schema que antecede o JSON Schema em uma década, comentários, e uma distinção entre atributos e elementos filhos. Nada disso sobrevive a uma ida e volta pelo JSON, então uma conversão de JSON para XML produz XML válido, porém estruturalmente mais simples do que XML escrito à mão.

How to do this in code

Convertendo em código.

py Python
import json
from dicttoxml import dicttoxml

xml = dicttoxml(json.loads(text), custom_root='root', attr_type=False)

# attr_type=False turns off the type="str" attributes dicttoxml
# adds to every element by default.
js JavaScript
import { XMLBuilder } from 'fast-xml-parser';

const builder = new XMLBuilder({
  format: true,
  attributeNamePrefix: '@',
  ignoreAttributes: false,
});
const xml = builder.build(JSON.parse(text));
cs C#
using Newtonsoft.Json;

XNode node = JsonConvert.DeserializeXNode(json, "root");
var xml = node.ToString();

Perguntas frequentes

Por que aparece um atributo xsi:nil?
Porque o XML não tem null. A convenção do XML Schema marca um elemento como nil com esse atributo, o que mantém null distinguível de uma string vazia. Um <field/> vazio poderia ser qualquer um dos dois.
Dá para converter JSON para XML e voltar?
Para documentos que ficam dentro deste mapeamento, dá. Nomes de chave que precisaram ser reescritos não voltam, e nem a distinção entre um array de um elemento e um valor solto, já que os dois produzem um único elemento.