您的位置:首页 > 编程语言 > Lua

Lua 解析XML

2016-07-27 09:37 344 查看
lua是一种非常小巧的脚本工具。

但是,他的字符串操作功能却非常强大。

鉴于此,用他来操作xml文件,还是挺方便的。

下面就来演示一下具体如何实现。

一、从xml文件中获取指定元素的值。

将下面的内容保存为一个文件,例如:get_xml_element.lua,并赋予可执行权限。

然后执行如下命令,即可获取指定xml文件中指定元素的值

./get_xml_element.lua /path/to/xml_file_name.xml element_name

好了,下面就是这个简单的lua脚本的内容。

#!/usr/bin/lua

xml_file=arg[1] --arg[1]是第1个命令行参数,用于指定xml文件的路径

element=arg[2] --arg[2]是第2个命令行参数,用于指定xml元素名称

head="<"..element..">" --根据元素名生成起始tag,即<element_name>

tail="</"..element..">" --根据元素名生成关闭tag,即</element_name>

file = io.open(xml_file, "r"); --打开xml文件

data = file:read("*all"); --读取文件的全部内容到data变量中

file:close(); --关闭xml文件

--获取起始tag与关闭tag之间的内容到value中

_,_,value=string.find(data, head.."(.-)"..tail)

--输出value的值到标准输出

print(value)

二、修改xml文件中指定元素的值。

直接上脚本了。

#!/usr/bin/lua

xml_file=arg[1] --arg[1]用于指定xml文件的路径

element=arg[2] --arg[2]用于指定xml元素名称

new_value=arg[3] --arg[3]用于指定xml元素的新值

head="<"..element..">" --根据元素名生成起始tag,即<element_name>

tail="</"..element..">" --根据元素名生成关闭tag,即</element_name>

file = io.open(xml_file, "r"); --打开xml文件

data = file:read("*all"); --读取文件的全部内容到data变量中

file:close(); --关闭xml文件

--将element之前的内容,element的值,element之后的内容,分别保存在pre,old_value,follow中

_,_,pre,old_value,follow=string.find(data, "(.*)("..head..".-"..tail..")(.*)")

file = io.open(xml_file, "w"); --打开xml文件

file:write(pre..head..new_value..tail..follow); --拼装出新的文件内容,并写入

file:close(); --关闭xml文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: