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元素名称
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文件