Indsæt GraphQL til venstre og klik på "Konvertér" — vi laver det om til XMLIndsæt GraphQL

Hvad værktøjet gør

Hvis du nogensinde har skullet dokumentere et GraphQL-API for et team, der kun arbejder i XML, eller koble et GraphQL-skema på en ældre SOAP-klient, kender du det akavede: GraphQL-typer oversætter ikke en-til-en. Indsæt dit skema eller din forespørgsel her, og få velformet XML tilbage i én omgang. En håndfuld type-definitioner, en fuld SDL-fil eller en konkret forespørgsel med argumenter — resultatet er det samme: et fuldstændigt XML-dokument, der spejler datas form.

Konverteren kender GraphQL-specifikationen, ikke bare overfladesyntaksen. Skalarernes standardværdier lander som forventet — String bliver tekst, Int og Float bliver numerisk tekst, Boolean bliver true/false, og ID bliver en strengværdi. Non-null-markører (String!) og list-markører ([OrderItem!]!) respekteres: en obligatorisk liste optræder som et containerelement med ét barn pr. element, og nullable-felter uden værdi kommer igennem som tomme elementer, så dokumentets form forbliver konsistent.

Ud over de indbyggede typer klarer værktøjet også resten af typesystemet. input-typer bliver til nestede elementer, enum-værdier kommer igennem som strengtekst, interface- og union-typer opløses til deres konkrete underliggende former, og fragmenter (navngivne eller inline) bliver bagt ind, så outputtet er fladt og selvstændigt. Brugerdefinerede skalarer som DateTime, Date og JSON udsendes som ISO-8601 eller strengificerede værdier. Indsætter du en query med argumenter, bevares argumenterne som en del af rodelementet, så XML’en er et trofast aftryk af forespørgslen, ikke bare en dataklump.

Sådan bruger du det

Tre trin. Virker ens, uanset om du indsætter en enkelt type eller et komplet skema med forespørgsler.

1

Indsæt din GraphQL (eller prøv eksemplet)

Smæk GraphQL som den er i den venstre editor. En enkelt type, en komplet SDL-fil med input/enum/interface/union eller en konkret forespørgsel med variabler — alt går an. Tryk på Indlæs eksempel, hvis du hellere vil starte med en realistisk form.

Du behøver ikke fjerne kommentarer eller omformatere SDL-syntaksen. Lad det stå, som din editor skrev det — både tredobbelt citerede docstrings og hash-kommentarer er fint.

2

Klik Konvertér

Klik på den grønne Konvertér-knap. Værktøjet læser skemaet (eller forespørgslen), opløser fragmenter og list-/non-null-markører og bygger XML’en i én omgang. En kort loading-indikator kører, mens konverteringen sker.

3

Kopiér XML’en

Højre panel fyldes med indrykket, velformet XML, som enhver standardoverholdende XML-parser vil acceptere. Kopiér det direkte ind i din SOAP-forespørgsel, dokumentation, fixture eller XSD-eksempel.

Hvornår det faktisk redder dagen

XML-baseret dokumentation til et GraphQL-API

Intern dokumentation eller partnerdokumentation, der lever i XML (DITA, DocBook, XSD-understøttet reference). Indsæt skemaet, få eksempel-XML-payloads, der matcher de rigtige typer — ingen håndoversættelse.

Generér XML-fixtures fra et skema

Kontrakttests, snapshot-tests eller en mock-server, der taler XML. Giv den skemaet, du allerede har, og få konsistente fixture-XML’er, hvor hver liste, nullable og nestet type sidder det rigtige sted.

Bro til ældre SOAP-klienter

Et partnersystem tager kun XML-payloads, men din backend taler GraphQL. Indsæt forespørgslen og svartypen, og få en XML-krop som startpunkt til SOAP-forespørgslen.

Skemamigrering og analyse

Ud af GraphQL og over i et XML-baseret API (eller bare sammenligning af de to former). Få en XML-version side om side af hver type, så reviewere, der ikke læser SDL, kan følge med.

Hyppige spørgsmål

Hvordan håndteres type, input, enum, interface og union?

type og input bliver til containerelementer med ét barn pr. felt. enum-værdier kommer igennem som almindelig strengtekst (enum-navnet, versaler, præcis som erklæret i SDL’en). interface opløses til sine egne felter plus felterne fra den implementerende type, når vi kender den konkrete type. union opløses til den matchende medlems form. Se referencen for GraphQL type language for de fulde regler.

Hvilke standarder bruges til String, Int, Float, Boolean og ID?

String og ID bliver tekstindhold. Int er et almindeligt heltal. Float er et decimaltal uden efterfølgende nuller. Boolean er teksten med små bogstaver true eller false. Det passer med skalardefinitionerne i GraphQL-specifikationen, så outputtet løber rent gennem en XML-parser.

Hvordan behandles non-null (!)- og list ([T])-markører?

Non-null (String!) behandles som et felt, der skal dukke op — nullable-felter uden værdi kommer igennem som tomme elementer, så dokumentformen forbliver forudsigelig. Lister ([OrderItem!]!) bliver til et containerelement med ét barn pr. element, opkaldt efter elementtypen — fx bliver items: [OrderItem!]! til <items><OrderItem/><OrderItem/></items>. Nestede lister ([[Int]]) nestes på samme måde.

Bliver fragmenter opløst?

Ja. Navngivne fragmenter (...OrderFields) og inline-fragmenter (... on Order { ... }) opløses inline, så XML’en bliver flad og selvstændig. Du behøver ikke indsætte fragment-definitioner separat — ligger de i samme blok, binder værktøjet dem sammen. Det svarer til den almindelige forespørgselsudførelsesmodel, hvor fragmenter spredes ud i selection set’et, før svaret bygges.

Hvad med brugerdefinerede skalarer som DateTime?

Velkendte brugerdefinerede skalarer (DateTime, Date, Time, UUID, JSON) udsendes som ISO-8601-tekst eller strengificerede værdier efter konvention — præcis som de fleste skalarbiblioteker gør. Ukendte brugerdefinerede skalarer falder tilbage på strengtekst, så intet bliver tabt i stilhed. Har du brug for et bestemt format, efterbehandl XML’en eller omdøb skalaren.

Kan jeg indsætte en forespørgsel med argumenter, ikke bare et skema?

Ja. Indsæt en query med variabler og argumenter — fx query GetOrder($orderId: ID!) { order(id: $orderId) { ... } } — og argumenterne kommer igennem som attributter på rodelementet. De valgte felter styrer, hvilke dele af svaret der serialiseres, så XML’en svarer til det, forespørgslen reelt ville returnere, ikke hele typen.

Andre værktøjer, du måske har brug for

GraphQL til XML er bare én brik i puslespillet. Disse værktøjer passer godt sammen med det: