lua解析xml文件

本文介绍了如何在OpenResty环境中安装LuaXML库并使用它来解析XML文件。首先,通过下载LuaXML,修改Makefile并执行make生成LuaXML_lib.so和LuaXML.lua文件,然后将它们复制到OpenResty的lualib目录下。接着展示了一个XML文件的部分内容,并演示了用Lua代码加载XML文件,查找特定节点(如'LoopController.loops'),修改其值(从10更改为20),最后保存修改后的XML文件到新路径。

1、openresty安装LuaXML库
下载地址:https://github.com/LuaDist/luaxml
修改Makefile文件
INCDIR = -I/usr/local/openresty/luajit/include/luajit-2.1
LIBDIR =  -L. -L/usr/local/openresty/luajit/lib
  LIBS          = $(LIBDIR) $(LIB) -lluajit-5.1 -ldl
  LIBS          = $(LIBDIR) -L/usr/local/lib $(LIB) -lluajit-5.1
    LIBS          = $(LIBDIR) $(LIB) -llua51 -mconsole -s
执行make
得到LuaXML_lib.so文件,将LuaXML_lib.so以及LuaXML.lua拷贝到openresty的/usr/local/openresty/lualib下
2、lua解析xml文件
(1)xml文件大致格式(省略前后的内容):
......
    <hashTree>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="ThreadGroup" enabled="true">
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <elementProp testclass="LoopController" elementType="LoopController" guiclass="LoopControlPanel" enabled="true" testname="LoopControlPanel"
name="ThreadGroup.main_controller">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <stringProp name="LoopController.loops">10</stringProp>
        </elementProp>
        <stringProp name="ThreadGroup.num_threads">10</stringProp>
        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
        <boolProp name="ThreadGroup.scheduler">false</boolProp>
        <stringProp name="ThreadGroup.duration" />
        <stringProp name="ThreadGroup.delay" />
      </ThreadGroup>
......
(3)lua代码
require("LuaXML")
local jmx = xml.load("/usr/local/openresty/lua/jmeter.jmx")                                     --加载xml文件
local loops_jmx = jmx:find("stringProp", "name", "LoopController.loops")              --查找标签为stringProp,包含属性name为LoopController.loops的内容
loops_jmx[1] = 20                      --loops_jmx[1]即是<stringProp name="LoopController.loops">10</stringProp>中的value:10,这里表示将value设置为20
jmx:save("/usr/local/openresty/lua/jmeter_new.jmx")                                              --将内容改为20后重新保存到新的文件jmeter_new.jmx中   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值