在LuaXML中编辑属性

我已经能够保存和加载XML文件,但我在实际影响其中的一个数字方面遇到了问题。这是我的示例:

require 'luaxml'

local text = [[
<Viewers>
  <eaglesfan0251>
    <Minutes>0</Minutes>
    <Minutes>eaglesfan0251</Minutes>
  </eaglesfan0251>
  <managarmr83>
    <Minutes>1</Minutes>
    <Minutes>managarmr83</Minutes>
  </managarmr83>
  <gorbatron5000>
    <Minutes>2</Minutes>
  </gorbatron5000>
</Viewers>
]]

local t = xml.eval(text)

for a, b in pairs(t:find("gorbatron5000","Minutes")) do
    if b.TAG ~= nil then
        if b[b.TAG] == "Minutes" then
            print(b[a])
            t:append("Minutes")[a] = "0"
        end
    end
end

print(t)

这在需要影响的位置之后添加了第二个Minutes标签。基本上,我想能够读取分钟数,然后更改它并更新XML。

点赞
用户518500
用户518500

我可能错了,但 find 函数的第二个参数不是要查找的标签的属性吗?

根据文档,我认为你的代码应该是这样的:

local t = xml.eval(text)

local node = t:find("gorbatron5000", nil, nil, nil)
if node ~= nil then
  print(node[1]) -- 如果第一个子标签是分钟
  node[1] = 0
end

来源:http://viremo.eludi.net/LuaXML/ 更详细的信息:

function xml.find(var, tag, attributeKey,attributeValue) 递归解析 Lua 表,以查找匹配提供的标记和属性的子陈述。

param var:要搜索的表。
param tag(可选):要查找的 XML 标记。
param attributeKey(可选):要查找的确切属性。
param attributeValue(可选):要查找的属性值。
返回匹配搜索条件的第一个(子)表或 nil

因此,我的理解得出了我写的代码。如果这对你有帮助,让我知道,因为我自己也在学习 Lua。

2015-02-19 14:13:10