Lua:
XMLの扱い方
方法:
LuaにはネイティブのXMLパーサーが含まれていませんが、LuaXMLやxml2luaのようなライブラリが存在し、仕事をこなします。xml2luaを使用してXMLを解析する方法を簡単に見てみましょう:
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) -- 出力: 123
print(handler.root.book[1]) -- 出力: Programming in Lua
XMLの書き込みについては、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()) -- 出力: <root><book id="123">Programming in Lua</book></root>
深く掘り下げて
XMLはExtensible Markup Languageの略で、90年代半ばからデータ表現と交換の標準となっています。XMLはデータに構造を与え、人が読むことができ、マシンが解析可能です。
JSONやYAMLはそのシンプルさから現在好まれていますが、XMLは多くの企業やレガシーシステムで依然として広く使用されています。LuaにはネイティブのXML処理が組み込まれていないのは、Luaが小さいサイズで拡張可能なモジュールを通じて設計されているためです。
LuaXML、xml2luaなどのLua用XMLライブラリは、このギャップを埋めます。LuaXMLは軽量なXMLリーダーとライターを提供し、xml2luaはSAXパーサーに似たイベント駆動のアプローチを使用します。これらのライブラリは通常、携帯性のために純粋なLuaで実装されていますが、一部はパフォーマンスのためにCに依存することがあります。
パフォーマンスとメモリ使用の面で、LuaのXMLライブラリはネイティブサポートを持つ言語のライブラリほど高速ではないかもしれません。しかし、Luaのほとんどの使用例、特にゲーム開発や組み込みシステムのスクリプトでは、これらのライブラリがシステムをオーバーロードすることなく十分な仕事をします。
参照
- GitHub上のLuaXML:https://github.com/LuaDist/luaxml
- GitHub上のxml2lua:https://github.com/manoelcampos/xml2lua
- Lua.orgのライブラリ一覧:https://lua-users.org/wiki/LibrariesAndBindings