Lua links einfügen und auf "Konvertieren" klicken — wir machen XML darausLua-Code einfügen

Was dieses Tool macht

Wenn Sie schon mal versucht haben, XML aus einer Lua-Tabelle von Hand zu bauen — für eine Nginx-Config, einen Spiel-Savefile, ein Redis-Script-Payload — wissen Sie, dass das zäh ist. xml2lua geht die andere Richtung sauber, aber XML aus einer Lua-Tabelle zu produzieren heißt immer noch, die Tabelle selbst zu durchlaufen und Strings zu verketten. Fügen Sie das Lua hier ein und Sie bekommen wohlgeformtes XML in einem Durchgang zurück — jeder Schlüssel, jede verschachtelte Subtabelle, jeder Array-Eintrag erhalten.

Das Tool weiß, wie sich Lua-Tabellen tatsächlich verhalten. Eine Hash-Stil-Tabelle ({ name = "Ava", age = 30 }) wird zu einem Element mit Kindelementen, die nach den String-Schlüsseln benannt sind. Eine Array-Stil-Tabelle ({ "a", "b", "c" }) — das, was Lua-Programmierer eine "Sequenz" nennen — wird zu einem Container-Element mit einem Kind pro Eintrag. Gemischte Tabellen (String-Schlüssel und numerische Indizes in derselben Tabelle) kommen durch mit dem Hash-Teil als benannte Kinder und dem Sequenz-Teil als indizierte Kinder darunter, sodass nichts stillschweigend verloren geht. Booleans (true, false) und Zahlen bleiben als ihr literaler Text; nil-Werte werden als leere selbstschließende Elemente ausgegeben statt zu verschwinden.

Ein paar Lua-Idiome werden so behandelt, wie man es sich wünschen würde. local-Deklarationen werden entfernt, sodass local order = { ... } einfach die innere Tabelle nutzt. Ein abschließendes return order am Ende einer Moduldatei wird erkannt, und die zurückgegebene Tabelle wird zur Dokumentwurzel. Lange Strings in [[ ... ]]-Notation kommen als Textinhalt mit erhaltenen Whitespaces durch. Schlüssel, die keine gültigen XML-Elementnamen sind — ["content-type"], [1], ["2024-04"] — werden zu einem sicheren Tag-Namen umgeschrieben, damit das Dokument trotzdem parsed. Wenn Sie mit den Eigenheiten, wie Lua Integer- und String-Schlüssel behandelt, noch nicht vertraut sind, hat das Buch Programming in Lua ein nützliches Kapitel dazu.

So benutzen

Drei Schritte. Funktioniert gleich, ob Sie eine einzeilige Tabelle einfügen oder eine komplette Moduldatei.

1

Ihr Lua einfügen (oder das Beispiel probieren)

Werfen Sie Ihren Lua-Code in den linken Editor. Ein nacktes Tabellenliteral, eine local t = {...}-Zuweisung, oder ein ganzes Modul das mit return t endet — alles in Ordnung. Klicken Sie auf Beispiel laden, wenn Sie ein realistisches Order-Beispiel zum Herumspielen wollen.

Sie müssen keine Kommentare entfernen, keine require()-Aufrufe rausnehmen und keine Metatables inlinen. Einfach einfügen. Wir lesen das Tabellenliteral und ignorieren den Rest.

2

Konvertieren drücken

Drücken Sie den grünen Konvertieren-Button. Das Tool läuft durch die Lua-Tabelle — Array-Teil, Hash-Teil, verschachtelte Subtabellen — und baut das XML in einem Durchgang. Während der Ausführung sehen Sie einen kurzen Ladeindikator.

3

XML kopieren

Das rechte Panel füllt sich mit eingerücktem, wohlgeformtem XML, das jeder standardkonforme Parser (einschließlich LuaExpat) akzeptiert. Kopieren Sie es in Ihre Config-Datei, Ihr Test-Fixture oder Ihre Doku.

Wann das wirklich nützlich ist

Spiel-Config-Dateien

Ihr Love2D- oder Defold-Projekt hält Leveldaten als Lua-Tabelle, aber Ihr Leveleditor oder Ihre Publishing-Pipeline will XML. Lua einfügen, XML kopieren — kein selbstgebasteltes Konvertierungsskript zu pflegen.

Nginx / OpenResty Config-Payloads

Wenn Sie Request- oder Response-Bodies als Lua-Tabellen in einem <code>ngx.location.capture</code>-Aufruf bauen und XML-Ausgabe brauchen, sparen Sie sich einen Concat-Helper zu schreiben. Verschachtelte Tabellen werden sauber zu verschachtelten Elementen.

Redis-Lua-Script-Payloads

Redis-Skripte, die strukturierte Tabellen zurückgeben (für Logging, Audit-Trails oder Downstream-Ingestion), müssen manchmal als XML an Legacy-Consumer geschickt werden. Tabellenliteral einfügen, XML bekommen, das direkt in die Pipeline passt.

Zwischen xml2lua und anderen Tools umwandeln

Teams, die <code>xml2lua</code> für die XML-zu-Lua-Richtung nutzen, brauchen manchmal den Rückweg für Tests und Fixtures. So bekommen Sie einen schnellen visuellen Check, wie eine Lua-Tabelle als XML aussehen sollte, bevor Sie sich auf einen handgeschriebenen Serializer festlegen.

Häufige Fragen

Wie werden Array-Stil- und Hash-Stil-Tabellen unterschiedlich behandelt?

Eine Array-Stil-Tabelle ({ "a", "b", "c" }) wird zu einem Container-Element mit nummerierten Kindern, die nach dem Elternteil benannt sind (oder einem generischen <item>-Tag). Eine Hash-Stil-Tabelle ({ name = "Ava" }) wird zu einem Element mit benannten Kindern. Eine gemischte Tabelle — Sequenzteil und String-Schlüssel — bekommt beide Formen nebeneinander, sodass nichts verloren geht.

Und String-Schlüssel versus Integer-Schlüssel?

String-Schlüssel werden direkt zu Elementnamen: { orderId = "ORD-4821" }<orderId>ORD-4821</orderId>. Integer-Schlüssel als Sequenz (1, 2, 3, ...) werden zu positionellen Kindern. Integer-Schlüssel mit Lücken oder nicht-ganzzahlige numerische Schlüssel werden mit einem index-Attribut ausgegeben, damit das Mapping erhalten bleibt. Die zugrundeliegende Semantik steht im Lua-5.4-Referenzhandbuch.

Geht es mit verschachtelten Tabellen und gemischten Typen?

Ja — beliebige Verschachtelung, gemischte String- / Integer-Schlüssel, Tabellen in Arrays, Arrays in Tabellen. Verschachtelte Subtabellen kommen als verschachtelte Elemente mit eigenen Kindern durch. Booleans werden als true/false gedruckt, Zahlen bleiben als literaler Text, und nil wird zu einem leeren selbstschließenden Element, damit die Form über Datensätze hinweg stabil bleibt.

Was passiert mit Schlüsseln mit Bindestrichen oder reservierten Zeichen?

Schlüssel wie ["content-type"] oder ["2024-04"] sind in Lua legal, aber als rohe XML-Elementnamen illegal. Der Konverter schreibt sie zu einem sicheren Tag um (zum Beispiel content_type) und behält den Originalnamen als Attribut. Wenn strikter Roundtrip wichtig ist, prüfen Sie die Ausgabe, bevor Sie sie nutzen.

Kann ich eine ganze Moduldatei einfügen?

Ja. local-Deklarationen, require()-Zeilen, Hilfsfunktionen und Kommentare werden ignoriert. Wenn die Datei mit return t endet, wird die zurückgegebene Tabelle zur Dokumentwurzel. Wenn es nur ein einzelnes Top-Level-Tabellenliteral gibt, wird stattdessen das genommen.

Wird mein Code gespeichert?

Der Code wird zur Konvertierung ans Backend geschickt und nicht persistiert — wir loggen das Payload nicht. Wenn das Skript sensibel ist, behandeln Sie es wie jedes Online-Tool: Secrets rausnehmen, dann einfügen.

Andere Tools, die Sie brauchen könnten

Lua zu XML ist ein Puzzlestück. Diese Tools passen gut dazu: