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, особенно в разработке игр или сценариев для встроенных систем, эти библиотеки делают свою работу хорошо, не перегружая систему.
Смотрите также
- LuaXML на GitHub: https://github.com/LuaDist/luaxml
- xml2lua на GitHub: https://github.com/manoelcampos/xml2lua
- Список библиотек на сайте Lua.org: https://lua-users.org/wiki/LibrariesAndBindings