LuaXml 使用的表格条目数量不正确。

我正在使用 LuaXml 将从网络接收到的 XML 字符串转换为 Lua 表,但遇到了两个问题。有人能够帮助指出问题吗?谢谢!

1)xml.eval 返回的表项数量为 4 而不是 3。我的意图是获取 3 个“preset”条目,但是得到了 4 个条目,其中最后一个显示为“ presets”。

2)我希望在 for 循环之前使用 tbl.find("preset") 获取 3 个“preset”条目并获取每个条目的属性,但 tbl.find("preset") 将返回 nil。

以下是代码。

xml = require("LuaXml")
buff = "\
<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?> \
<presets> \
<preset name=\"preset1\" url=\"Load?name=testlist1\" id=\"1\"/> \
<preset name=\"preset2\" url=\"Load?name=testlist2\" id=\"2\"/> \
<preset name=\"preset3\" url=\"Load?name=testlist3\" id=\"3\"/> \
</presets>"

local tbl = xml.eval(buff)
for i in pairs(tbl) do
    print("name: " .. tbl[i].name .. ", id: " .. tbl[i].id .. ", url: " .. tbl[i].url)
end
点赞
用户258523
用户258523

一个小小的实验调查表明,LuaXml 为顶层的 XML 文档元素创建一个表项(索引为 0),然后为该元素的每个直接子标记创建一个额外的元素(按顺序的数值索引)。

因此,输出的表格是:

> for i=0,#tbl do print(i, type(tbl[i]), tbl[i]) end
0       string  presets
1       table   <preset url="Load?name=testlist1" name="preset1" id="1" />

2       table   <preset url="Load?name=testlist2" name="preset2" id="2" />

3       table   <preset url="Load?name=testlist3" name="preset3" id="3" />

这让我感觉处理方式非常奇怪,但似乎这就是它所做的。

2014-08-13 19:17:06