xml2lua is an XML parser written entirely in Lua which doesn’t depend on any external C/C++ library. It works for Lua 5.1 to 5.3 and enables:
parsing an XML string into a Lua Table;
converting a Lua Table to an XML string.
This version was adapted to work with Lua 5 and can be used in Lua applications, including interactive Digital Television (DTV) Ginga NCL applications for the Brazilian DTV System (worldwide known as ISDB-T International or ISDB-Tb).
The original parser was written by Paul Chakravarti and is available on LuaUsers.
The best way to download the module is using LuaRocks at the command line:
luarocks install xml2luaA simplified example which parses an XML directly from a string is presented below. There are some caveats to deal with when an XML has just one tag. Check the example1.lua for details.
localxml2lua=require("xml2lua")
--Uses a handler that converts the XML to a Lua tablelocalhandler=require("xmlhandler.tree")
localxml=[[<people> <person type="natural"> <name>Manoel</name> <city>Palmas-TO</city> </person> <person type="legal"> <name>University of Brasília</name> <city>Brasília-DF</city> </person></people>]]--Instantiates the XML parserlocalparser=xml2lua.parser(handler)
parser:parse(xml)
--Manually prints the table (since the XML structure for this example is previously known)fori, pinpairs(handler.root.people.person) doprint(i, "Name:", p.name, "City:", p.city, "Type:", p._attr.type)
endlocalxml2lua=require("xml2lua")
localpeople= {
person= {
{name="Manoel", city="Palmas-TO", _attr={ type='natural' } },
{name="Breno", city="Palmas-TO", _attr={ type='legal' } }
}
}
print("People Table\n")
xml2lua.printable(people)
print()
print("XML Representation\n")
print(xml2lua.toXml(people, "people"))You can use a command line tool to try parsing XML files.
Execute lua testxml.lua -help on the terminal for more details.
You must have installed docker and docker compose.
This code is freely distributable under the terms of the MIT license.
Manoel Campos da Silva Filho http://about.me/manoelcampos
Paul Chakravarti paulc@passtheaardvark.com
