Nginx+Lua环境中利用LuaXml解析Xml

本文介绍了如何在Nginx+Lua环境下配置LuaXml库,包括下载、编译、安装和使用步骤,以及如何通过Lua代码解析XML字符串。

搭建Nginx+Lua环境参见nginx+lua+redis构建高并发应用(ubuntu) 和nginx+lua+redis构建高并发应用(centos/rehat)


在LuaXml官网(需要翻墙,运气好可以不用偷笑)有两个版本:LuaXML_130610.zipLuaXML_101012.zip,分别对应lua5.2和lua5.1版本。根据lua版本自行下载。下载后如果可以直接链接就用,如果链接出错则需要自行编译,编译步骤如下。

1、修改Makefile

Makefile中的头文件目录和依赖库目录都不对,需要修改成自己lua库对应的位置。修改完之后执行make。这时目录下会生成出LuaXML_lib.so。这里最好先将原先存在的LuaXML_lib.so删除。


2、配置目录

编译完成后,将LuaXML_lib.so和LuaXml.lua放置于/usr/local/lib/lua/5.1/目录下。因为默认依赖库目录在这里,当然你也可以指定一个目录,同时将目录设置进环境变量。比如mkdir /home/usr/soft。编辑 vim /etc/profile文件,在文件尾部添加 export PATH=/home/usr/soft:$PATH。保存退出后执行 source /etc/profile使之生效。


到这里我们在lua文件或者nginx.conf的lua片段中就可以使用LuaXml来解析xml格式的文件、字符串了。例子如下。

1、链接LuaXml库

 

init_by_lua 'require("LuaXml")';


链接完后,由于LuaXml返回的是全局对象xml,所以后续就直接可以使用xml.来调用函数使用。init_by_lua 位于http片段中。


2、构造xml字符串

 

rez = xml.new("response")
rez:append("server_ip")[1] = "127.0.0.1"
rez:append("server_port")[1] = "12345"			
rez = xml.str(rez)

 

返回的rez为字符串类型。


3、解析xml字符串

 

local xml_info = xml.eval(resp.body)
local item = xml_info:find("is_alive")
local value = item[1] --这里去除is_alive的值

 

取出的value根据需要转换。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值