Cole o GraphQL à esquerda e clique em "Converter" — nós transformamos em XMLCole o GraphQL

O que esta ferramenta faz

Se você já precisou documentar uma API GraphQL para um time que só trabalha com XML, ou ligar um esquema GraphQL a um cliente SOAP legado, conhece a parte chata: os tipos de GraphQL não mapeiam um para um. Cole aqui o seu esquema ou consulta e receba XML bem formado numa única passada. Algumas definições type, um arquivo SDL completo ou uma consulta concreta com argumentos — o resultado é o mesmo: um documento XML completo que espelha a forma dos dados.

O conversor entende a especificação do GraphQL, não só a sintaxe de superfície. Os padrões dos escalares caem como você espera — String vira texto, Int e Float viram texto numérico, Boolean vira true/false e ID vira string. Marcadores não-nulo (String!) e de lista ([OrderItem!]!) são respeitados: uma lista obrigatória aparece como um elemento contêiner com um filho por item, e campos nulos sem valor vêm como elementos vazios para manter a forma do documento consistente.

Além dos tipos embutidos, a ferramenta cobre o resto do sistema de tipos. Tipos input viram elementos aninhados, valores de enum saem como texto, tipos interface e union são resolvidos para as formas concretas subjacentes e fragmentos (nomeados ou inline) são expandidos para que a saída seja plana e autossuficiente. Escalares personalizados como DateTime, Date e JSON são emitidos como ISO-8601 ou valores serializados. Se você colar uma query com argumentos, eles são preservados como parte do elemento raiz, de modo que o XML é um registro fiel da requisição, não apenas um bloco de dados.

Como usar

Três passos. Funciona do mesmo jeito se você cola um único tipo ou um esquema completo com consultas.

1

Cole seu GraphQL (ou teste o exemplo)

Jogue o GraphQL como está no editor da esquerda. Um único type, um arquivo SDL completo com input/enum/interface/union ou uma consulta concreta com variáveis — tudo serve. Clique em Carregar exemplo se quiser começar com uma forma realista.

Não precisa tirar comentários nem reformatar a sintaxe SDL. Deixe do jeito que seu editor escreveu — docstrings com três aspas e comentários com cerquilha passam sem problema.

2

Clique em Converter

Clique no botão verde Converter. A ferramenta lê o esquema (ou a consulta), resolve fragmentos e marcadores de lista/não-nulo e monta o XML em uma passada. Um indicador curto de carregamento aparece enquanto a conversão acontece.

3

Copie o XML

O painel direito enche de XML indentado e bem formado que qualquer parser XML padrão aceita. Cole direto na sua requisição SOAP, documentação, fixture ou exemplo de XSD.

Quando realmente salva o dia

Documentação XML para uma API GraphQL

Docs internas ou de parceiros que vivem em XML (DITA, DocBook, referência baseada em XSD). Cole o esquema, receba payloads XML de exemplo alinhados aos tipos reais — sem tradução manual.

Gerar fixtures XML a partir de um esquema

Testes de contrato, testes de snapshot ou um mock server que fala XML. Entregue o esquema que você já tem e receba fixtures XML consistentes com cada lista, campo opcional e tipo aninhado no lugar certo.

Ponte para clientes SOAP legados

Um sistema parceiro só aceita payloads XML, mas seu backend fala GraphQL. Cole a consulta e o tipo de resposta e receba um corpo XML de partida para colocar na requisição SOAP.

Migração e análise de esquema

Sair do GraphQL para uma API em XML (ou só comparar os dois formatos). Tenha uma versão XML lado a lado de cada tipo para que revisores que não leem SDL consigam acompanhar.

Perguntas frequentes

Como type, input, enum, interface e union são tratados?

type e input viram elementos contêiner com um filho por campo. Valores de enum saem como texto comum (o nome do enum em maiúsculas, exatamente como declarado no SDL). interface é resolvida para seus próprios campos mais os campos do tipo implementador quando sabemos o tipo concreto. union é resolvida para a forma do membro correspondente. Veja a referência da linguagem de tipos GraphQL para as regras completas.

Quais padrões são usados para String, Int, Float, Boolean e ID?

String e ID viram conteúdo de texto. Int é um inteiro simples. Float é decimal sem zeros à direita. Boolean é o texto minúsculo true ou false. Isso bate com as definições de escalares da especificação do GraphQL, então a saída passa redondinha por um parser XML.

Como os marcadores não-nulo (!) e lista ([T]) são tratados?

O não-nulo (String!) é tratado como um campo que deve aparecer — campos nulos sem valor saem como elementos vazios para manter a forma do documento previsível. Listas ([OrderItem!]!) viram um elemento contêiner com um filho por item, nomeado conforme o tipo do elemento — por exemplo items: [OrderItem!]! vira <items><OrderItem/><OrderItem/></items>. Listas aninhadas ([[Int]]) aninham da mesma forma.

Os fragmentos são resolvidos?

Sim. Fragmentos nomeados (...OrderFields) e fragmentos inline (... on Order { ... }) são expandidos para que o XML fique plano e autossuficiente. Você não precisa colar as definições de fragmento à parte — se estão no mesmo bloco, a ferramenta liga os pontos. Isso combina com o modelo normal de execução de consultas, onde os fragmentos são espalhados no selection set antes de a resposta ser montada.

E escalares personalizados como DateTime?

Escalares personalizados bem conhecidos (DateTime, Date, Time, UUID, JSON) são emitidos como texto ISO-8601 ou valores serializados por convenção — batendo com o que a maioria das bibliotecas de escalares faz. Escalares desconhecidos caem em texto de string, então nada é descartado silenciosamente. Se precisa de um formato específico, faça pós-processamento no XML ou renomeie o escalar.

Posso colar uma consulta com argumentos, não só o esquema?

Pode. Cole uma query com variáveis e argumentos — por exemplo query GetOrder($orderId: ID!) { order(id: $orderId) { ... } } — e os argumentos saem como atributos no elemento raiz. Os campos selecionados ditam quais partes da forma da resposta são serializadas, então o XML corresponde ao que a consulta realmente devolveria, não ao tipo inteiro.

Outras ferramentas úteis

GraphQL para XML é só uma peça do quebra-cabeça. Estas ferramentas combinam bem: