Lua:
Att arbeta med XML

Hur man gör:

Lua inkluderar inte inbyggd XML-tolkning, men det finns bibliotek som LuaXML och xml2lua som gör jobbet. Här är en snabb titt på att tolka XML med xml2lua:

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

local xmlParser = xml2lua.parser(handler)
xmlParser:parse([[<root><book id="123">Programming in Lua</book></root>]])

print(handler.root.book._attr.id)  -- Skriver ut: 123
print(handler.root.book[1])        -- Skriver ut: Programming in Lua

För att skriva XML, här är ett miniexempel som använder LuaXML:

local luaxml = require("LuaXML")

local xml = xml.new("root")
xml:append("book")[1] = "Programming in Lua"
xml.book._attr = {id="123"}

print(xml:tag())  -- Skriver ut: <root><book id="123">Programming in Lua</book></root>

Djupdykning

XML, som står för Extensible Markup Language, har varit en standard i datarrepresentation och utbyte sedan mitten av 90-talet. Det ger struktur till data och är både läsbart för människor och tolkbart för maskiner.

Även om JSON och YAML nu föredras för deras enkelhet, är XML fortfarande utbrett i många företag och äldre system. I Lua är inbyggd hantering av XML inte inbyggd eftersom Lua är designat för att vara litet och utbyggbart genom moduler.

XML-bibliotek för Lua, som LuaXML, xml2lua och andra, överbryggar detta gap. LuaXML tillhandahåller en lättvikts XML-läsare och -skrivare, medan xml2lua använder en händelsedriven metod liknande SAX-tolkar. Dessa bibliotek är vanligtvis implementerade i ren Lua för portabilitet, medan vissa kan förlita sig på C för prestanda.

När det kommer till prestanda och minnesanvändning kanske Luas XML-bibliotek inte är lika snabba som de i språk med inbyggt stöd. Men för de flesta användningsfall i Lua, speciellt inom spelutveckling eller skriptning för inbäddade system, gör dessa bibliotek ett bra jobb utan att överbelasta systemet.

Se även