在用Lua写程序的时候免不了对XML进行读写,网上找的第三方库,是别人特定环境下的,自己用起来经常导致程序死掉。
索性自己写了一个(我这代码是从本人项目中扣出来的,本着分享的原理share出来,也对自己做个备忘)
读:
function readconfigValue(keyName,nodeName)
local tpath=lfs.currentdir()
tpath=tpath.."\\Config\\Config.xml"
--DbgOut(tpath)
local head="<"..keyName.."(.-)".."</"..keyName..">"
local file1=io.open(tpath,"r+")
local data=file1:read("*all");
local tmp1 = "";
local tmp2 = ""
file1:close();
n0,n1,tmp1=string.find(data,head)
if n1==nil then
tmp1 = "Error";
print("Read error!!!!")
return -1;
else
tmp1 = string.gsub(tmp1, "%s+", "");
l0,l1,tmp2=string.find(tmp1,nodeName.."=\"(.-)\"")
--DbgOut(tmp2)
end
--Delay(10)
return tmp2;
end
写:
function writeconfigValue(keyName,nodeName,new_value)
local tpath=lfs.currentdir()
tpath=tpath.."\\Config\\Config.xml"
--DbgOut(tpath)
local head="<"..keyName.."(.-)".."</"..keyName..">"
local file1=io.open(tpath,"r+")
local data=file1:read("*all");
local tmp1 = "";
local tmp2 = ""
local gggg = nil;
file1:close();
file1 = nil;
--Delay(20);
n0,n1,tmp1=string.find(data,head)
local file2=io.open(tpath,"w+")
if n1==nil then
tmp1 = "Error";
print("Write error!!!!")
return -1;
else
tmp1 = string.gsub(tmp1, "%s+", "");
l0,l1,tmp2=string.find(tmp1,nodeName.."=\"(.-)\"")
local fff = string.gsub(tmp1,tmp2,tostring(new_value));
tmp1 = tmp1.."</"..keyName..">";
fff = fff.."</"..keyName..">";
gggg = string.gsub(data,tmp1,fff);
--DbgOut(gggg)
end
file2:write(gggg)
--Delay(50);
file2:close();
file2 = nil;
return fff;
end
如果有问题欢迎添加微信公众号 程序猿从入门到放弃 进行咨询: