Wklej Lua po lewej i kliknij "Konwertuj" — zamienimy to w XMLWklej kod Lua

Co robi to narzędzie

Jeśli kiedykolwiek próbowałeś sklejać XML ręcznie z tabeli Lua — pod config Nginx, plik save'a gry, payload skryptu Redis — wiesz, że to męczące. xml2lua idzie w drugą stronę czysto, ale produkowanie XML z tabeli Lua wciąż znaczy chodzenie po niej samemu i sklejanie stringów. Wklej Lua tutaj i dostajesz poprawnie sformatowany XML w jednym przejściu — każdy klucz, każda zagnieżdżona podtabela, każdy element tablicy zachowany.

Narzędzie wie, jak naprawdę zachowują się tabele Lua. Tabela w stylu hash ({ name = "Ava", age = 30 }) staje się elementem z dziećmi nazwanymi według kluczy stringowych. Tabela w stylu tablicowym ({ "a", "b", "c" }) — to, co programiści Lua nazywają "sekwencją" — staje się elementem kontenerem z jednym dzieckiem na element. Tabele mieszane (klucze stringowe i indeksy liczbowe w tej samej tabeli) przechodzą z częścią hash jako nazwane dzieci i częścią sekwencji jako dzieci indeksowane poniżej, dzięki czemu nic nie ginie po cichu. Booleany (true, false) i liczby zostają jako ich literalny tekst; wartości nil są emitowane jako puste samozamykające się elementy zamiast znikać.

Kilka idiomów Lua jest obsługiwanych tak, jak by się tego chciało. Deklaracje local są usuwane, więc local order = { ... } po prostu używa tabeli w środku. Końcowe return order na końcu pliku modułu jest rozpoznawane, a zwrócona tabela staje się korzeniem dokumentu. Długie stringi pisane z [[ ... ]] przechodzą jako zawartość tekstowa z zachowanymi białymi znakami. Klucze, które nie są poprawnymi nazwami elementów XML — ["content-type"], [1], ["2024-04"] — są przepisywane na bezpieczną nazwę tagu, żeby dokument wciąż się parsował. Jeśli jesteś nowy w dziwnych zwyczajach Lua, jeżeli chodzi o klucze całkowite vs stringowe, książka Programming in Lua ma użyteczny rozdział o tym.

Jak używać

Trzy kroki. Działa tak samo, czy wklejasz jednolinijkową tabelę, czy cały plik modułu.

1

Wklej swoje Lua (albo spróbuj przykładu)

Rzuć swój kod Lua do lewego edytora. Goły literał tabeli, przypisanie local t = {...} albo cały moduł kończący się na return t — wszystko w porządku. Kliknij Wczytaj przykład, jeśli chcesz najpierw pobawić się realistycznym przykładem Order.

Nie musisz usuwać komentarzy, wywołań require() ani wklejać inline metatabel. Po prostu wklej. Czytamy literał tabeli i ignorujemy resztę.

2

Naciśnij Konwertuj

Kliknij zielony przycisk Konwertuj. Narzędzie przechodzi tabelę Lua — część tablicową, część hash, zagnieżdżone podtabele — i buduje XML w jednym przejściu. Zobaczysz krótki wskaźnik ładowania podczas działania.

3

Skopiuj XML

Prawy panel wypełnia się wciętym, poprawnie sformatowanym XML, który zaakceptuje każdy parser zgodny ze standardami (w tym LuaExpat). Skopiuj to do swojego pliku konfiguracyjnego, fixture'a testowego albo dokumentacji.

Kiedy to naprawdę się przydaje

Pliki konfiguracji gier

Twój projekt Love2D albo Defold trzyma dane poziomów jako tabelę Lua, ale edytor poziomów albo pipeline publikacji chce XML. Wklej Lua, skopiuj XML — bez utrzymywania doraźnego skryptu konwertera.

Payloady konfiguracji Nginx / OpenResty

Jeśli budujesz body żądań albo odpowiedzi jako tabele Lua wewnątrz wywołania <code>ngx.location.capture</code> i potrzebujesz wyjścia XML, oszczędza to pisania helpera do konkatenacji. Zagnieżdżone tabele stają się zagnieżdżonymi elementami czysto.

Payloady skryptów Lua w Redis

Skrypty Redis zwracające tabele strukturalne (do logowania, śladów audytu albo ingestii downstream) czasem muszą być wysyłane jako XML do legacy konsumentów. Wklej literał tabeli, odbierz XML, który wpada prosto do pipeline'a.

Konwersja między xml2lua a innymi narzędziami

Zespoły używające <code>xml2lua</code> do kierunku XML-do-Lua czasem potrzebują odwrotności na testy i fixture'y. Daje ci to szybką, wizualną kontrolę, jak tabela Lua powinna wyglądać jako XML, zanim zdecydujesz się na ręcznie pisany serializer.

Częste pytania

Jak tabele w stylu tablicowym i hash są obsługiwane inaczej?

Tabela w stylu tablicowym ({ "a", "b", "c" }) staje się elementem kontenerem z numerowanymi dziećmi nazwanymi według rodzica (albo generycznym tagiem <item>). Tabela w stylu hash ({ name = "Ava" }) staje się elementem z nazwanymi dziećmi. Tabela mieszana — z częścią sekwencji i kluczami stringowymi — dostaje obie formy obok siebie, żeby nic się nie zgubiło.

A co z kluczami stringowymi vs całkowitymi?

Klucze stringowe stają się nazwami elementów bezpośrednio: { orderId = "ORD-4821" }<orderId>ORD-4821</orderId>. Klucze całkowite używane jako sekwencja (1, 2, 3, ...) stają się dziećmi pozycyjnymi. Klucze całkowite z lukami albo nie-całkowite klucze liczbowe są emitowane z atrybutem index, żeby mapowanie było zachowane. Zobacz podręcznik referencyjny Lua 5.4 dla leżącej pod spodem semantyki.

Czy radzi sobie z zagnieżdżonymi tabelami i typami mieszanymi?

Tak — dowolne zagnieżdżenie, mieszane klucze string / całkowite, tabele w tablicach, tablice w tabelach. Zagnieżdżone podtabele przechodzą jako zagnieżdżone elementy z własnymi dziećmi. Booleany drukują się jako true/false, liczby zostają jako literalny tekst, a nil staje się pustym samozamykającym się elementem, żeby kształt pozostał stabilny między rekordami.

Co dzieje się z kluczami z myślnikami albo zarezerwowanymi znakami?

Klucze jak ["content-type"] albo ["2024-04"] są legalne w Lua, ale nielegalne jako surowe nazwy elementów XML. Konwerter przepisuje je na bezpieczny tag (na przykład content_type) i zachowuje oryginalną nazwę jako atrybut. Jeśli zależy ci na ścisłym round-trippingu, przejrzyj wyjście przed użyciem.

Mogę wkleić cały plik modułu?

Tak. Deklaracje local, linie require(), funkcje pomocnicze i komentarze są ignorowane. Jeśli plik kończy się na return t, zwrócona tabela staje się korzeniem dokumentu. Jeśli jest tylko jeden literał tabeli na najwyższym poziomie, to on jest używany.

Czy mój kod jest zapisywany?

Kod jest wysyłany do backendu do konwersji i nie jest zapamiętywany — nie logujemy payloadu. Jeśli skrypt jest wrażliwy, traktuj go jak każde narzędzie online: wyczyść sekrety najpierw, potem wklej.

Inne narzędzia, które mogą być potrzebne

Lua do XML to jeden kawałek układanki. Te narzędzia dobrze z tym współgrają: