Incolla Lua a sinistra e clicca "Converti" — lo trasformiamo in XMLIncolla codice Lua

Cosa fa questo strumento

Se hai mai provato a costruire XML a mano da una tabella Lua — per un config Nginx, un file di salvataggio di un gioco, un payload di script Redis — sai che è noioso. xml2lua fa il percorso inverso pulitamente, ma produrre XML da una tabella Lua significa comunque percorrere la tabella a mano e concatenare stringhe. Incolla il Lua qui e ricevi XML ben formato in una passata — ogni chiave, ogni sotto-tabella annidata, ogni elemento dell'array preservato.

Lo strumento sa come si comportano davvero le tabelle Lua. Una tabella stile hash ({ name = "Ava", age = 30 }) diventa un elemento con figli nominati secondo le chiavi stringa. Una tabella stile array ({ "a", "b", "c" }) — quella che i programmatori Lua chiamano "sequenza" — diventa un elemento contenitore con un figlio per item. Le tabelle miste (chiavi stringa e indici numerici nella stessa tabella) arrivano con la parte hash come figli nominati e la parte sequenza come figli indicizzati sotto, così nulla si perde in silenzio. Booleani (true, false) e numeri restano come testo letterale; i valori nil vengono emessi come elementi vuoti self-closing invece di sparire.

Alcuni idiomi Lua vengono gestiti come uno si aspetterebbe. Le dichiarazioni local vengono rimosse, quindi local order = { ... } usa semplicemente la tabella interna. Un return order finale di un file di modulo viene riconosciuto e la tabella restituita diventa la radice del documento. Le stringhe lunghe scritte con [[ ... ]] passano come contenuto testuale con gli spazi preservati. Le chiavi che non sono nomi di elemento XML validi — ["content-type"], [1], ["2024-04"] — vengono riscritte in un nome di tag sicuro perché il documento resti parsabile. Se sei nuovo sui dettagli di come Lua tratta chiavi intere vs stringa, il libro Programming in Lua ha un capitolo utile.

Come usarlo

Tre passi. Funziona uguale sia che tu incolli una tabella su una riga o un file modulo completo.

1

Incolla il tuo Lua (o prova l'esempio)

Lascia il tuo codice Lua nell'editor di sinistra. Un literal di tabella nudo, un'assegnazione local t = {...}, o un intero modulo che finisce con return t — tutto va bene. Clicca Carica esempio se vuoi un esempio Order realistico con cui giocare prima.

Non devi togliere i commenti, rimuovere le chiamate require() o inlineare le metatable. Incolla e basta. Leggiamo il literal di tabella e ignoriamo il resto.

2

Premi Converti

Clicca il pulsante verde Converti. Lo strumento percorre la tabella Lua — parte array, parte hash, sotto-tabelle annidate — e costruisce l'XML in una passata. Vedrai un breve indicatore di caricamento durante l'esecuzione.

3

Copia l'XML

Il pannello di destra si riempie di XML indentato e ben formato che qualsiasi parser conforme agli standard (incluso LuaExpat) accetta. Copialo nel tuo file di config, fixture di test o documentazione.

Quando torna davvero utile

File di config per giochi

Il tuo progetto Love2D o Defold tiene i dati di livello come tabella Lua, ma l'editor di livelli o la pipeline di publishing vuole XML. Incolla il Lua, copia l'XML — nessuno script di conversione ad-hoc da mantenere.

Payload di config Nginx / OpenResty

Se costruisci body di richiesta o risposta come tabelle Lua dentro una chiamata <code>ngx.location.capture</code> e hai bisogno di output XML, ti risparmi di scrivere un helper di concatenazione. Le tabelle annidate diventano elementi annidati puliti.

Payload di script Lua in Redis

Gli script Redis che restituiscono tabelle strutturate (per logging, audit trail o ingestion a valle) a volte vanno inviati come XML a consumer legacy. Incolla il literal di tabella, ricevi XML che si infila dritto nella pipeline.

Convertire tra xml2lua e altri tool

I team che usano <code>xml2lua</code> per la direzione XML-a-Lua a volte hanno bisogno dell'inverso per test e fixture. Questo ti dà un controllo visuale rapido di come una tabella Lua dovrebbe apparire come XML prima di impegnarti su un serializer scritto a mano.

Domande frequenti

Come vengono gestite diversamente le tabelle stile array e stile hash?

Una tabella stile array ({ "a", "b", "c" }) diventa un elemento contenitore con figli numerati nominati secondo il padre (o un tag generico <item>). Una tabella stile hash ({ name = "Ava" }) diventa un elemento con figli nominati. Una tabella mista — con parte sequenza e chiavi stringa — riceve entrambe le forme affiancate in modo che nulla si perda.

E le chiavi stringa rispetto a quelle intere?

Le chiavi stringa diventano direttamente nomi di elemento: { orderId = "ORD-4821" }<orderId>ORD-4821</orderId>. Le chiavi intere usate come sequenza (1, 2, 3, ...) diventano figli posizionali. Le chiavi intere con buchi, o chiavi numeriche non intere, vengono emesse con un attributo index per preservare il mapping. Vedi il manuale di riferimento Lua 5.4 per la semantica sottostante.

Gestisce tabelle annidate e tipi misti?

Sì — annidamento arbitrario, chiavi stringa / intere miste, tabelle dentro array, array dentro tabelle. Le sotto-tabelle annidate passano come elementi annidati con i loro figli. I booleani stampano come true/false, i numeri restano come testo letterale, e nil diventa un elemento vuoto self-closing così la forma resta stabile tra i record.

Cosa succede a chiavi con trattini o caratteri riservati?

Chiavi come ["content-type"] o ["2024-04"] sono legali in Lua ma illegali come nomi di elemento XML grezzi. Il convertitore le riscrive in un tag sicuro (per esempio content_type) e preserva il nome originale come attributo. Se il round-trip stretto conta, controlla l'output prima di usarlo.

Posso incollare un intero file modulo?

Sì. Dichiarazioni local, righe require(), funzioni helper e commenti vengono ignorati. Se il file termina con return t, la tabella restituita diventa la radice del documento. Se c'è solo un singolo literal di tabella al livello superiore, viene usato quello.

Il mio codice viene salvato?

Il codice viene inviato al backend per la conversione e non viene persistito — non loggiamo il payload. Se lo script è sensibile, trattalo come qualsiasi tool online: togli i segreti prima, poi incolla.

Altri strumenti che ti possono servire

Lua in XML è un pezzo del puzzle. Questi strumenti funzionano bene insieme: