Though a little hard to find, there are some nice xml projects in lua. Here are two that caught my attention:

http://etree.luaforge.net/ - includes the ability to output a lua data structure as XML. Nice, but uses Expat. Expat is fine, but most of the bindings I use these days connect with libxml2.

http://asbradbury.org/projects/lua-xmlreader/ - Like the name suggests, implements the xmlreader functionality of libxml2. Its a great way of dealing with XML, but I’m not sure if it includes an output function. The author has also written lua cdb bindings - that is awesome.

While not a lua library or project, here’s a post about lua tables and xml which includes an XSLT stylesheet which can convert XML into a lua data structure, very interesting!

http://www.latenightpc.com/blog/archives/2006/02/06/converting-simple-xml-to-lua-tables-with-xslt

There are also some terrific SQL libraries, the one I’m trying out is even a database abstraction layer - LuaSQL. With the help of their examples, this actually works:

require "luasql.sqlite3"
env = assert (luasql.sqlite3())
con = assert (env:connect("luasql-test"))
res = con:execute"DROP TABLE metadata"
res = assert (con:execute[[  CREATE TABLE metadata(    id  int(11),    key varchar(50),    value varchar(50)  )]])
list = {  { id=1, key="month", value="May", },}
for i, p in pairs (list) do  res = assert (con:execute(string.format([[    INSERT INTO metadata    VALUES ('%s', '%s', '%s')]], p.id, p.key, p.value)  ))
end
cur = assert (con:execute"SELECT key,value from metadata")
row = cur:fetch ({}, "a")
while row do  print(string.format("Key: %s, Value: %s", row.key, row.value))  row = cur:fetch (row, "a")
end
cur:close()
con:close()
env:close()