Plak GraphQL links en klik op "Converteren" — wij maken er XML vanPlak GraphQL

Wat deze tool doet

Als je ooit een GraphQL-API hebt moeten documenteren voor een team dat alleen met XML werkt, of een GraphQL-schema aan een legacy SOAP-client hebt moeten hangen, ken je het ongemak: GraphQL-types vertalen niet één-op-één. Plak hier je schema of query en je krijgt welgevormde XML in één keer terug. Een handvol type-definities, een compleet SDL-bestand of een concrete query met argumenten — hetzelfde resultaat: een volledig XML-document dat de vorm van de data weergeeft.

De converter kent de GraphQL-spec, niet alleen de oppervlaktesyntaxis. De defaults van scalars vallen zoals je verwacht — String wordt tekst, Int en Float worden numerieke tekst, Boolean wordt true/false en ID wordt een string-waarde. Non-null markeringen (String!) en list-markeringen ([OrderItem!]!) worden gerespecteerd: een verplichte lijst verschijnt als container-element met één kind per item, en nullable velden zonder waarde komen als lege elementen door zodat de vorm van het document consistent blijft.

Naast de ingebouwde types pakt de tool ook de rest van het type system aan. input-types worden geneste elementen, enum-waarden komen door als string-tekst, interface- en union-types worden herleid naar hun concrete onderliggende vormen, en fragments (benoemd of inline) worden inline opgenomen zodat de output plat en zelfstandig is. Custom scalars als DateTime, Date en JSON worden als ISO-8601 of gestringificeerde waarden uitgevoerd. Plak je een query met argumenten, dan blijven die argumenten deel van het wortelelement, zodat de XML een getrouw verslag van de request is en niet zomaar een data-blob.

Hoe je 'm gebruikt

Drie stappen. Werkt hetzelfde of je nu één type plakt of een compleet schema met queries.

1

Plak je GraphQL (of probeer het voorbeeld)

Gooi de GraphQL zoals die is in de linker editor. Één type, een compleet SDL-bestand met input/enum/interface/union of een concrete query met variabelen — allemaal prima. Klik op Voorbeeld laden als je eerst met een realistische vorm wilt spelen.

Je hoeft geen commentaar te verwijderen of de SDL-syntaxis opnieuw te formatteren. Laat het zoals je editor het heeft geschreven — triple-quoted docstrings en hash-comments werken allebei.

2

Klik op Converteren

Klik op de groene Converteren-knop. De tool leest het schema (of de query), herleidt fragments en lijst-/non-null-markeringen en bouwt de XML in één pass. Tijdens het converteren draait een korte loading-indicator.

3

Kopieer de XML

Het rechterpaneel vult zich met ingesprongen, welgevormde XML die elke standaardconforme XML-parser accepteert. Kopieer het direct in je SOAP-request, documentatie, fixture of XSD-voorbeeld.

Wanneer dit echt nuttig is

XML-documentatie voor een GraphQL-API

Interne docs of partner-documentatie die in XML leven (DITA, DocBook, XSD-gebaseerde referentie). Plak het schema, krijg voorbeeld-XML-payloads die aansluiten op de echte types — zonder handwerk.

XML-fixtures genereren uit een schema

Contract tests, snapshot tests of een mock server die XML spreekt. Geef hem het schema dat je al hebt en krijg consistente fixture-XML met elke lijst, nullable en geneste type op de juiste plek.

Brug naar legacy SOAP-clients

Een partnersysteem accepteert alleen XML-payloads maar je backend praat GraphQL. Plak de query en het response-type en krijg een XML-body als startpunt om in de SOAP-request te zetten.

Schema-migratie & analyse

Weg van GraphQL naar een XML-gebaseerde API (of gewoon de twee vormen vergelijken). Krijg een side-by-side XML-versie van elk type, zodat reviewers die geen SDL lezen mee kunnen komen.

Veelgestelde vragen

Hoe worden type, input, enum, interface en union behandeld?

type en input worden container-elementen met één kind per veld. enum-waarden komen door als gewone string-tekst (de enum-naam in hoofdletters, precies zoals in de SDL gedeclareerd). interface wordt herleid tot zijn eigen velden plus de velden van het implementerende type zodra we het concrete type kennen. union wordt herleid tot de vorm van het matchende member. Zie de GraphQL type language-referentie voor de volledige regels.

Welke defaults gelden voor String, Int, Float, Boolean en ID?

String en ID worden tekstinhoud. Int is een gewoon geheel getal. Float is een decimaal getal zonder trailing nullen. Boolean is de kleine-lettertekst true of false. Die komen overeen met de scalar-definities in de GraphQL-spec, zodat de output schoon door een XML-parser rolt.

Hoe worden non-null (!) en list ([T]) markeringen verwerkt?

Non-null (String!) geldt als een veld dat moet verschijnen — nullable velden zonder waarde komen als lege elementen door zodat de documentvorm voorspelbaar blijft. Lijsten ([OrderItem!]!) worden een container-element met één kind per item, met de naam van het element-type — bijvoorbeeld items: [OrderItem!]! wordt <items><OrderItem/><OrderItem/></items>. Geneste lijsten ([[Int]]) nesten op dezelfde manier.

Worden fragments herleid?

Ja. Benoemde fragments (...OrderFields) en inline fragments (... on Order { ... }) worden inline opgelost zodat de XML plat en zelfstandig is. Je hoeft de fragment-definities niet apart te plakken — als ze in hetzelfde blok staan, verbindt de tool ze. Dat sluit aan op het normale query-executie-model, waarbij fragments in het selection set worden uitgespreid voordat de response wordt opgebouwd.

En custom scalars zoals DateTime?

Bekende custom scalars (DateTime, Date, Time, UUID, JSON) worden per conventie uitgestuurd als ISO-8601-tekst of gestringificeerde waarden — net zoals de meeste scalar-libraries doen. Onbekende custom scalars vallen terug op string-tekst, zodat er niets stilletjes wegvalt. Wil je een specifiek formaat? Post-process de XML of hernoem de scalar.

Kan ik een query met argumenten plakken, niet alleen een schema?

Zeker. Plak een query met variabelen en argumenten — bijvoorbeeld query GetOrder($orderId: ID!) { order(id: $orderId) { ... } } — en de argumenten komen door als attributen op het wortelelement. De geselecteerde velden bepalen welke delen van de response-vorm worden geserialiseerd, dus de XML komt overeen met wat de query daadwerkelijk zou teruggeven, niet met het volledige type.

Andere handige tools

GraphQL naar XML is maar één puzzelstuk. Deze tools passen er goed bij: