Plak Lua links en klik op "Converteren" — wij maken er XML vanPlak Lua-code

Wat deze tool doet

Als je ooit XML met de hand uit een Lua-tabel hebt proberen te fabriceren — voor een Nginx-config, een game-savebestand, een Redis-scriptpayload — dan weet je hoe vervelend dat is. xml2lua gaat de andere kant netjes, maar XML uit een Lua-tabel produceren betekent nog steeds zelf door de tabel lopen en strings aan elkaar plakken. Plak de Lua hier en je krijgt in één keer welgevormde XML terug — elke key, elke geneste subtabel, elk array-item behouden.

De tool weet hoe Lua-tabellen zich echt gedragen. Een hash-stijl tabel ({ name = "Ava", age = 30 }) wordt een element met kinderen vernoemd naar de string-keys. Een array-stijl tabel ({ "a", "b", "c" }) — wat Lua-programmeurs een "sequence" noemen — wordt een container-element met één kind per item. Gemengde tabellen (string-keys én numerieke indices in dezelfde tabel) komen door met het hash-deel als benoemde kinderen en het sequence-deel als geïndexeerde kinderen eronder, zodat er niets stilletjes verdwijnt. Booleans (true, false) en getallen blijven als hun literale tekst; nil-waarden worden uitgegeven als lege self-closing elementen in plaats van te verdwijnen.

Een paar Lua-idiomen worden afgehandeld zoals je zou hopen. local-declaraties worden weggestript, dus local order = { ... } gebruikt gewoon de tabel erbinnen. Een afsluitende return order aan het eind van een modulebestand wordt herkend en de teruggegeven tabel wordt de documentroot. Lange strings met [[ ... ]] komen als tekstinhoud door met witruimte behouden. Keys die geen geldige XML-elementnamen zijn — ["content-type"], [1], ["2024-04"] — worden herschreven naar een veilige tagnaam zodat het document toch parset. Ben je nieuw in de kuren van hoe Lua integer- vs string-keys behandelt, dan heeft het boek Programming in Lua er een nuttig hoofdstuk over.

Hoe te gebruiken

Drie stappen. Werkt hetzelfde of je nu een eenregelige tabel plakt of een heel modulebestand.

1

Plak je Lua (of probeer het voorbeeld)

Zet je Lua-code in de linkereditor. Een kale tabelliteral, een local t = {...}-toewijzing, of een hele module die eindigt op return t — allemaal prima. Klik op Voorbeeld laden als je eerst met een realistisch Order-voorbeeld wilt spelen.

Je hoeft geen commentaar weg te halen, geen require()-aanroepen te verwijderen en geen metatables inline te zetten. Gewoon plakken. We lezen de tabelliteral en negeren de rest.

2

Klik op Converteren

Druk op de groene Converteren-knop. De tool loopt door de Lua-tabel — array-deel, hash-deel, geneste subtabellen — en bouwt de XML in één keer. Je ziet tijdens het draaien een korte laadindicator.

3

Kopieer de XML

Het rechterpaneel vult zich met ingesprongen, welgevormde XML die elke standaardconforme parser (waaronder LuaExpat) accepteert. Kopieer het in je configbestand, testfixture of documentatie.

Wanneer dit echt van pas komt

Game-configbestanden

Je Love2D- of Defold-project bewaart leveldata als Lua-tabel, maar je leveleditor of publicatie-pipeline wil XML. Plak het Lua, kopieer de XML — geen ad-hoc converterscript om te onderhouden.

Nginx / OpenResty config-payloads

Als je request- of responsebodies als Lua-tabellen bouwt binnen een <code>ngx.location.capture</code>-aanroep en XML-output nodig hebt, bespaart dit je een concat-helper. Geneste tabellen worden netjes geneste elementen.

Redis Lua-scriptpayloads

Redis-scripts die gestructureerde tabellen teruggeven (voor logging, audit trails of downstream ingestion) moeten soms als XML naar legacy-consumers. Plak de tabelliteral, krijg XML die zo de pipeline in kan.

Converteren tussen xml2lua en andere tooling

Teams die <code>xml2lua</code> gebruiken voor de XML-naar-Lua-richting hebben soms het omgekeerde nodig voor tests en fixtures. Dit geeft je een snelle visuele check van hoe een Lua-tabel als XML hoort te zien voor je je vastlegt op een handgeschreven serializer.

Veelgestelde vragen

Hoe worden array-stijl en hash-stijl tabellen verschillend behandeld?

Een array-stijl tabel ({ "a", "b", "c" }) wordt een container-element met genummerde kinderen vernoemd naar de ouder (of een generieke <item>-tag). Een hash-stijl tabel ({ name = "Ava" }) wordt een element met benoemde kinderen. Een gemengde tabel — met zowel een sequence-deel als string-keys — krijgt beide vormen naast elkaar zodat er niets verloren gaat.

En string-keys versus integer-keys?

String-keys worden rechtstreeks elementnamen: { orderId = "ORD-4821" }<orderId>ORD-4821</orderId>. Integer-keys als sequence (1, 2, 3, ...) worden positionele kinderen. Integer-keys met gaten, of niet-gehele numerieke keys, worden uitgegeven met een index-attribuut zodat de mapping behouden blijft. Zie de Lua 5.4 referentiehandleiding voor de onderliggende semantiek.

Gaat het om met geneste tabellen en gemengde types?

Ja — willekeurige nesting, gemengde string- / integer-keys, tabellen in arrays, arrays in tabellen. Geneste subtabellen komen door als geneste elementen met hun eigen kinderen. Booleans printen als true/false, getallen blijven als literale tekst en nil wordt een leeg self-closing element zodat de vorm stabiel blijft over records heen.

Wat gebeurt er met keys met streepjes of gereserveerde tekens?

Keys als ["content-type"] of ["2024-04"] zijn legaal in Lua maar illegaal als ruwe XML-elementnamen. De converter herschrijft ze naar een veilige tag (bijvoorbeeld content_type) en behoudt de oorspronkelijke naam als attribuut. Als strikte round-tripping belangrijk is, bekijk de output dan voor gebruik.

Kan ik een heel modulebestand plakken?

Ja. local-declaraties, require()-regels, helperfuncties en commentaar worden genegeerd. Eindigt het bestand op return t, dan wordt de teruggegeven tabel de documentroot. Is er alleen één top-level tabelliteral, dan wordt die gebruikt.

Wordt mijn code opgeslagen?

De code wordt naar de backend gestuurd voor conversie en wordt niet bewaard — we loggen de payload niet. Is het script gevoelig, behandel het dan zoals elke online tool: haal eerst secrets eruit, plak dan.

Andere tools die je misschien nodig hebt

Lua naar XML is één stukje van de puzzel. Deze tools passen er goed bij: