Lua til XML-konverterer
Lim inn Lua-tabeller. Få ryddig XML tilbake.
Hva dette verktøyet gjør
Hvis du noen gang har prøvd å snekre sammen XML for hånd fra en Lua-tabell — til en Nginx-config, en lagringsfil fra et spill, en Redis-scriptpayload — så vet du at det er kjedelig arbeid. xml2lua går andre veien rent, men å produsere XML fra en Lua-tabell betyr fortsatt å gå gjennom tabellen selv og skjøte sammen strenger. Lim inn Lua-en her og få velformet XML tilbake i én runde — hver nøkkel, hver nøstede undertabell, hvert array-element bevart.
Verktøyet vet hvordan Lua-tabeller faktisk oppfører seg. En hash-stil-tabell ({ name = "Ava", age = 30 }) blir et element med barn navngitt etter strengnøklene. En array-stil-tabell ({ "a", "b", "c" }) — det Lua-programmerere kaller en "sequence" — blir et container-element med ett barn per element. Blandede tabeller (både strengnøkler og numeriske indekser i samme tabell) kommer gjennom med hash-delen som navngitte barn og sekvens-delen som indekserte barn under, så ingenting forsvinner i stillhet. Booleaner (true, false) og tall forblir som den bokstavelige teksten; nil-verdier skrives ut som tomme selvlukkende elementer i stedet for å forsvinne.
Noen Lua-idiomer håndteres slik man ville håpet. local-erklæringer fjernes, så local order = { ... } bruker bare tabellen inni. Et avsluttende return order på slutten av en modulfil gjenkjennes, og den returnerte tabellen blir dokumentrot. Lange strenger skrevet med [[ ... ]] kommer gjennom som tekstinnhold med whitespace bevart. Nøkler som ikke er gyldige XML-elementnavn — ["content-type"], [1], ["2024-04"] — skrives om til et trygt taggnavn, slik at dokumentet fortsatt parses. Er du ny på sære sider ved hvordan Lua behandler heltalls- kontra strengnøkler, har boken Programming in Lua et nyttig kapittel om det.
Slik bruker du det
Tre steg. Fungerer likt om du limer inn en enlinjes tabell eller en hel modulfil.
Lim inn Lua-en din (eller prøv eksempelet)
Slipp Lua-koden din i venstre editor. En bar tabell-literal, en local t = {...}-tilordning, eller en hel modul som slutter med return t — alt går. Klikk på Last inn eksempel om du vil leke med et realistisk Order-eksempel først.
Du trenger ikke fjerne kommentarer, ta bort require()-kall eller inline metatables. Bare lim inn. Vi leser tabell-literalen og ignorerer resten.
Trykk Konverter
Klikk på den grønne Konverter-knappen. Verktøyet går gjennom Lua-tabellen — array-del, hash-del, nøstede undertabeller — og bygger XML-en i én runde. Du ser en kort lasteindikator mens det kjører.
Kopier XML-en
Høyre panel fylles med innrykket, velformet XML som enhver standardkompatibel parser (inkludert LuaExpat) vil godta. Kopier det inn i config-filen din, testfikstur eller dokumentasjon.
Når dette faktisk kommer til nytte
Spill-configfiler
Love2D- eller Defold-prosjektet ditt holder leveldata som Lua-tabell, men leveleditoren eller publiseringspipelinen vil ha XML. Lim inn Lua-en, kopier XML-en — ingen ad-hoc konverterskript å vedlikeholde.
Nginx / OpenResty config-payloads
Hvis du bygger request- eller response-bodier som Lua-tabeller inne i et <code>ngx.location.capture</code>-kall og trenger XML-output, sparer dette deg for å skrive en skjøte-hjelper. Nøstede tabeller blir rent nøstede elementer.
Redis Lua-scriptpayloads
Redis-skript som returnerer strukturerte tabeller (for logging, revisjonsspor eller downstream-inntak) må av og til sendes som XML til legacy-konsumenter. Lim inn tabell-literalen, få XML som går rett inn i pipelinen.
Konvertere mellom xml2lua og andre verktøy
Team som bruker <code>xml2lua</code> for XML-til-Lua-retningen, trenger av og til det motsatte for tester og fiksturer. Dette gir deg en rask, visuell sjekk på hvordan en Lua-tabell bør se ut som XML før du binder deg til en håndskrevet serializer.
Vanlige spørsmål
Hvordan håndteres array-stil og hash-stil-tabeller ulikt?
En array-stil-tabell ({ "a", "b", "c" }) blir et container-element med nummererte barn navngitt etter forelderen (eller en generisk <item>-tagg). En hash-stil-tabell ({ name = "Ava" }) blir et element med navngitte barn. En blandet tabell — både en sekvens-del og strengnøkler — får begge formene ved siden av hverandre slik at ingenting går tapt.
Og hva med strengnøkler kontra heltallsnøkler?
Strengnøkler blir elementnavn direkte: { orderId = "ORD-4821" } → <orderId>ORD-4821</orderId>. Heltallsnøkler brukt som sekvens (1, 2, 3, ...) blir posisjonelle barn. Heltallsnøkler med hull, eller ikke-heltalls numeriske nøkler, skrives ut med et index-attributt så mappingen bevares. Se Lua 5.4-referansemanualen for semantikken under.
Takler det nøstede tabeller og blandede typer?
Ja — vilkårlig nøsting, blandede streng- / heltallsnøkler, tabeller i arrayer, arrayer i tabeller. Nøstede undertabeller kommer gjennom som nøstede elementer med egne barn. Booleaner skrives ut som true/false, tall forblir som bokstavelig tekst, og nil blir et tomt selvlukkende element så formen holder seg stabil på tvers av poster.
Hva skjer med nøkler som har bindestreker eller reserverte tegn?
Nøkler som ["content-type"] eller ["2024-04"] er lovlige i Lua, men ulovlige som rå XML-elementnavn. Konverteren skriver dem om til en trygg tagg (for eksempel content_type) og bevarer det opprinnelige navnet som attributt. Hvis streng tur-retur er viktig, se gjennom outputen før du bruker den.
Kan jeg lime inn en hel modulfil?
Ja. local-erklæringer, require()-linjer, hjelpefunksjoner og kommentarer ignoreres. Slutter filen med return t, blir den returnerte tabellen dokumentrot. Er det bare en enkelt tabell-literal på toppnivå, brukes den i stedet.
Blir koden min lagret?
Koden sendes til backend for konvertering og blir ikke lagret — vi logger ikke payloaden. Er skriptet sensitivt, behandle det som hvilket som helst nettverktøy: fjern secrets først, lim så inn.
Andre verktøy du kan trenge
Lua til XML er en brikke av puslespillet. Disse verktøyene passer godt sammen med det: