Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/manoelcampos/xml2lua
XML Parser written entirely in Lua that works for Lua 5.1+. Convert XML to and from Lua Tables ๐๐ฑ
https://github.com/manoelcampos/xml2lua
dtv ginga ginga-ncl isdb isdb-t isdb-tb lua lua5 parser sbtvd xml xml-parser xml2lua
Last synced: 8 days ago
JSON representation
XML Parser written entirely in Lua that works for Lua 5.1+. Convert XML to and from Lua Tables ๐๐ฑ
- Host: GitHub
- URL: https://github.com/manoelcampos/xml2lua
- Owner: manoelcampos
- License: mit
- Created: 2015-09-22T16:10:45.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2024-05-07T13:58:25.000Z (6 months ago)
- Last Synced: 2024-10-31T11:36:50.804Z (13 days ago)
- Topics: dtv, ginga, ginga-ncl, isdb, isdb-t, isdb-tb, lua, lua5, parser, sbtvd, xml, xml-parser, xml2lua
- Language: Lua
- Homepage:
- Size: 244 KB
- Stars: 287
- Watchers: 10
- Forks: 74
- Open Issues: 9
-
Metadata Files:
- Readme: README.adoc
- License: LICENSE
Awesome Lists containing this project
README
:source-highlighter: highlightjs
:numbered:
:unsafe:= xml2lua image:https://img.shields.io/github/actions/workflow/status/manoelcampos/xml2lua/build.yml[GitHub Actions Workflow Status] image:http://img.shields.io/badge/license-MIT-brightgreen.svg[MIT license,link=http://opensource.org/licenses/MIT] image:https://img.shields.io/luarocks/v/manoelcampos/xml2lua[LuaRocks,link=https://luarocks.org/modules/manoelcampos/xml2lua]
ifdef::env-github[]
:outfilesuffix: .adoc
:caution-caption: :fire:
:important-caption: :exclamation:
:note-caption: :paperclip:
:tip-caption: :bulb:
:warning-caption: :warning:
endif::[]image:conversion-ways.png[]
*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) http://gingancl.org.br/en[Ginga NCL applications] for the http://www.dtv.org.br[Brazilian DTV System]
(worldwide known as https://en.wikipedia.org/wiki/ISDB-T_International[ISDB-T International or ISDB-Tb]).The original parser was written by Paul Chakravarti and is available on http://lua-users.org/wiki/LuaXml[LuaUsers].
== Installation
=== From LuaRocks repository
The best way to download the module is using
https://luarocks.org/modules/manoelcampos/xml2lua[LuaRocks] at the command line:[source,bash]
----
luarocks install xml2lua
----=== From local sources
Download the source files using the download button above or type at a terminal:
[source,bash]
----
git clone https://github.com/manoelcampos/xml2lua.git
----Finally, enter the directory where the source files were downloaded and type:
[source,bash]
----
luarocks make
----== How to use
=== Parsing an XML String into a Lua Table
A 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 link:example1.lua[example1.lua] for details.*[source,lua]
----
local xml2lua = require("xml2lua")
--Uses a handler that converts the XML to a Lua table
local handler = require("xmlhandler.tree")local xml = [[
Manoel
Palmas-TO
University of Brasรญlia
Brasรญlia-DF
]]
--Instantiates the XML parser
local parser = xml2lua.parser(handler)
parser:parse(xml)--Manually prints the table (since the XML structure for this example is previously known)
for i, p in pairs(handler.root.people.person) do
print(i, "Name:", p.name, "City:", p.city, "Type:", p._attr.type)
end
----=== Converting a Lua Table to an XML String
[source,lua]
----
local xml2lua = require("xml2lua")
local people = {
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"))
----== Command line tool
You can use a command line tool to try parsing XML files.
Execute `lua testxml.lua -help` on the terminal for more details.== Running tests
=== Requirements
You must have https://docs.docker.com/compose/install/[installed docker and docker compose].
=== How to
[source,bash]
----
make lint # to run the lint check
make test # to run the acceptance tests
----== License
This code is freely distributable under the terms of the link:LICENSE[MIT license].
== Authors
* Manoel Campos da Silva Filho http://about.me/manoelcampos
* Paul Chakravarti link:mailto:[email protected][[email protected]]