如何在Lua中解析xml文件?
问题描述:
我想用Lua解析一个简单的xml文件。我应该使用什么lua xml库?我试过xml lib by Lubyk,但它对我没有用。如何在Lua中解析xml文件?
这里是我做过什么: $ sudo luarocks install xml
试图导入模块: require("xml")
结束:
error loading module 'xml.core' from file '/usr/lib/lua/5.3/xml/core.so':
/usr/lib/lua/5.3/xml/core.so: undefined symbol: lua_tonumber
lua: /usr/share/lua/5.3/xml/init.lua:31: attempt to call a nil value (field 'Parser')
stack traceback:
/usr/share/lua/5.3/xml/init.lua:31: in main chunk
[C]: in function 'require'
lua_doc_reader.lua:3: in main chunk
[C]: in ?
那么,什么是事实上的XML在Lua读库?
答
好吧,试图使用各种XML库后,那个为我工作的是xmlreader。
$ sudo luarocks install lua-xmlreader
然后,根据所述的XMLReader文档:
require('xmlreader')
fhandle = io.open("temp.xml", 'r')
data = fhandle:read("*a")
local r = assert(xmlreader.from_string(data))
while (r:read()) do
local leadingws = (' '):rep(r:depth())
if (r:node_type() == 'element') then
io.write(('%s%s:'):format(leadingws, r:name()))
while (r:move_to_next_attribute()) do
io.write((' %s=%q'):format(r:name(), r:value()))
end
io.write('\n')
end
end
上面的代码,打印出文档的XML结构。
尝试[my lxml](http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/index.html#lxml),它基于expat。 – lhf
我很抱歉,但在“到目前为止,向Lua添加库最简单的方法是动态加载它们。”,我停止阅读。 – minerals
在我的文章中没有“动态加载”,我正在寻找一种简单的方法来读取XML。另外,你是否认真考虑过有人会编辑Makefile,然后编译lua来支持动态加载,只从你的网站安装一个库?我真的很感谢你的帮助,但这不是你使用lib库的方式。 – minerals