Lua:
עבודה עם XML

איך לעשות:

Lua אינו כולל פרסור XML מובנה, אך ישנן ספריות כמו LuaXML ו־xml2lua שמבצעות את העבודה. הנה מבט מהיר על פרסור XML באמצעות xml2lua:

local xml2lua = require("xml2lua")
local handler = require("xmlhandler.tree")

local xmlParser = xml2lua.parser(handler)
xmlParser:parse([[<root><book id="123">תכנות ב-Lua</book></root>]])

print(handler.root.book._attr.id)  -- מוציא: 123
print(handler.root.book[1])        -- מוציא: תכנות ב-Lua

לכתיבה של XML, הנה דוגמה מינימלית באמצעות LuaXML:

local luaxml = require("LuaXML")

local xml = xml.new("root")
xml:append("book")[1] = "תכנות ב-Lua"
xml.book._attr = {id="123"}

print(xml:tag())  -- מוציא: <root><book id="123">תכנות ב-Lua</book></root>

צלילה עמוקה

XML, שמתרגם לשפת הסימון הנתיחה (Extensible Markup Language), הוא תקן בייצוג נתונים והחלפה מאמצע שנות ה-90. הוא נותן מבנה לנתונים והוא קריא גם לאנשים וגם למחשבים.

בעוד ש-JSON ו-YAML מועדפים כעת בגלל הפשטות שלהם, XML עדיין שורר במערכות רבות ארגוניות ומורשות. ב-Lua, טיפול ילידי ב-XML אינו מוטמע מכיוון ש-Lua מעוצבת להיות קטנה ונתיחה דרך מודולים.

ספריות XML ל-Lua, כמו LuaXML, xml2lua ואחרים, גורמות לגשר על הפער הזה. LuaXML מספקת קורא וכותב XML קליל, בעוד ש-xml2lua משתמשת בגישה מבוססת אירועים דומה למפענחי SAX. ספריות אלו בדרך כלל מיושמות ב-Lua נקי לצורך ניידות, וחלק מהן עשויות להסתמך על C לצורך ביצועים.

בנוגע לביצועים ושימוש בזיכרון, ספריות XML של Lua עשויות לא להיות מהירות כמו אלו בשפות עם תמיכה ילידית. עם זאת, לרוב השימושים ב-Lua, במיוחד בפיתוח משחקים או כתיבת סקריפטים למערכות מוטמעות, ספריות אלו עושות עבודה טובה ללא עומס יתר על המערכת.

ראו גם