Conversor de JavaScript para XML
Cole um objeto, classe ou instância JavaScript. Receba XML limpo de volta.
O que essa ferramenta faz
Se você já teve que montar na mão um payload XML pra bater com um objeto JavaScript — pra um serviço SOAP, um feed RSS, um sitemap ou uma fixture de teste —, conhece a dor. O XMLSerializer precisa de DOM, o DOMParser vai pro outro lado, e montar elemento por elemento na mão quer dizer que você esquece um filho nas três primeiras vezes. Cola o JS aqui e recebe XML bem formado de uma tacada só. Funciona com objeto simples, classe ES6 mais instância new, ou qualquer coisa profundamente aninhada.
Ele entende como os valores JS mapeiam pra XML. Número e booleano viram string. Objetos Date saem em ISO-8601. BigInt sai como string decimal (sem o sufixo n). Campos null e undefined viram elementos vazios em vez de serem jogados fora, então a forma do output fica estável. Arrays viram elementos container com um filho por item, nomeados pela chave pai no singular — um array items num Order vira <items><item>...</item></items>, exceto quando o array tem instâncias de classe tipadas — aí o nome da classe é usado.
Definição de classe também é tratada. Um class Order { constructor(...) { this.x = ...; } } mais const order = new Order(...) te dá uma raiz <Order> com cada propriedade que foi atribuída no construtor. Instâncias de classe aninhadas se expandem como elementos aninhados. Métodos, getters, propriedades com chave Symbol e as que começam com # (campos privados) são puladas. Se você colar só um objeto literal puro, ele é serializado direto com um nome de elemento raiz sensato.
Como usar
Três passos. Funciona do mesmo jeito se você colar um literal pequeno ou um módulo inteiro.
Cole seu JavaScript (ou teste o exemplo)
Joga seu JS como está no editor da esquerda. Um objeto literal simples, uma classe ES6 + instância, o retorno de uma factory function ou um export de módulo Node.js — tudo serve. Clique em Load Sample pra ver um exemplo realista de Order / OrderItem / Address.
Deixa o const, let e as instruções import. Não precisa tirar — o parser sabe ignorar a sintaxe em volta e ler os valores de verdade.
Dê Convert
Clique no botão verde Convert. A ferramenta lê o JS, preserva toda classe, array e objeto aninhado e cospe o XML de uma vez. Enquanto roda aparece um indicador curto de loading.
Copie o XML
O painel da direita enche de XML indentado e bem formado que qualquer parser XML padrão aceita. Copia direto pra sua request SOAP, template RSS ou fixture de teste.
Quando realmente salva
Montar bodies de request SOAP
Você tem um objeto JS que espelha uma request SOAP e precisa do body XML pra jogar no SoapUI, Postman ou numa chamada <code>fetch</code>. Cola o objeto, copia o XML, segue a vida.
Gerar feeds RSS e Atom
Transforme um objeto de feed com title, link e items num esqueleto <a href="https://www.w3.org/TR/xml/" target="_blank" rel="noopener">XML</a> bem formado que dá pra embrulhar no envelope RSS certinho — sem montar elemento a elemento na mão.
Começar arquivos sitemap.xml
Cola um array de objetos URL e pega a estrutura que precisa pra um sitemap <code><urlset></code>. Troca o namespace pelo certo e tá feito.
Seed de testes de integração
Converta os objetos fixture do setup do Jest ou Vitest em dados XML de seed pra sistemas legados, mock servers ou qualquer consumidor que ainda fale XML.
Dúvidas comuns
Funciona com objetos simples, classes ES6 e arrays?
Sim, os três. Um objeto literal simples serializa direto com as chaves virando nomes de elemento. Uma classe ES6 mais uma instância new usa o nome da classe como elemento raiz. Arrays viram elementos container com um filho por item, nomeados pela classe do elemento (se os itens forem instâncias) ou pela chave no singular.
Como ele trata Date, BigInt e null?
Objetos Date saem como strings ISO-8601. BigInt é emitido como sua string decimal (o sufixo n cai fora). Propriedades null e undefined viram elementos vazios (<field/>) em vez de sumirem em silêncio, então um XSD lá na frente que espera o elemento ainda valida.
E métodos, getters e campos privados?
Métodos e getters da classe são pulados — só as propriedades de dados que foram realmente atribuídas na instância são serializadas. Campos privados declarados com #, propriedades com chave Symbol e propriedades do prototype (não da instância) também são puladas. Mesmo comportamento do JSON.stringify.
Posso colar só um objeto literal, sem classe?
Pode. Um const data = { ... } puro funciona sem drama — o nome da variável de fora vira elemento raiz, ou um <root> genérico se não tiver binding. Objetos e arrays aninhados dentro viram elementos aninhados do mesmo jeito.
Ele escapa caracteres especiais como &, < e >?
Sim. Texto que contenha &, <, >, " ou ' é escapado pras entidades XML correspondentes, então o output sempre parseia limpo de volta. Caracteres Unicode ficam como estão e o output é UTF-8.
Meu código fica salvo?
Seu código vai pro backend só pra converter e não é persistido — não logamos o payload. Como sempre com ferramenta online, se o código for de fato sensível, dá uma relida antes de colar.
Outras ferramentas que podem te servir
JavaScript para XML é só uma peça do quebra-cabeça. Essas combinam bem: