LuaExpat笔记

xml

  xml是一种格式化数据交换语言, 适用于在网络上不同应用会话。

http://www.xml.com/pub/a/98/10/guide0.html

 

exPat

  一种C语言实现的 xml 文档 解析库, 面向流文件的解析工具, 适合网络接收端使用, 边接受边解析。

http://www.libexpat.org/

  expat C API

http://www.xml.com/pub/a/1999/09/expat/index.html?page=1

LuaExpat

  一种基于expat的库的lua封装实现的xml解析器, C语言实现。

http://matthewwild.co.uk/projects/luaexpat/

  LOM -- LUA OBJECT Model ,利用luaExpat解析器 (lxp)lua接口,写的一个lua文件,提供解析函数,将XML文档转化为 lua table。

http://matthewwild.co.uk/projects/luaexpat/lom.html

   与expat C API 相对应的 luaExpat开放接口见 manul 的 Parser Object章节

http://matthewwild.co.uk/projects/luaexpat/manual.html#parser

 

code

  expat 打印tag在流中开闭的顺序 和 文本

require"lxp"

local xmlStr = [[
<elem1>
    text
    <elem2/>
    more text
</elem1>
]]

local count = 0
callbacks = {
    StartElement = function (parser, name)
        io.write("+ ", string.rep(" ", count), name, "\n")
        count = count + 1
    end,
    EndElement = function (parser, name)
        count = count - 1
        io.write("- ", string.rep(" ", count), name, "\n")
    end,
    CharacterData = function (parser, string)
        io.write("* ", string.rep(" ", count), string, "\n")
    end
}

p = lxp.new(callbacks)

p:parse(xmlStr)          -- parses the line
p:parse()               -- finishes the document
p:close()               -- closes the parser

 

 

 

  lom 转换xml为table后, 打印各个特征

require "lxp.lom"

s = [[<abc a1="A1" a2="A2">inside tag abc</abc>]]

tab = lxp.lom.parse (s)

io.write("tag="..tab.tag, "\n");
io.write("content="..tab[1], "\n");
local attr1 = tab.attr[1];
io.write("attr1="..attr1, "attr1 value="..tab.attr[attr1],"\n");

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值