我正在使用LuaXml将从网络接收的xml字符串转换为Lua表但有两个问题。有人可以帮忙指出问题吗?谢谢!
1) xml.eval 返回一个包含4个条目而不是3个条目的表。我的目的是获得3个“预设”条目,但得到4个条目,最后一个条目显示“预设“。
2)我希望使用 tbl.find (“预设”)在 for 循环之前获取“预设”的3个条目并获取每个条目的属性输入,但 tbl.find (“预设”)将返回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
答案 0 :(得分:3)
一些实验性的讨论表明,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" />
这让我觉得这是处理事情的一种非常奇怪的方式,但这似乎就是它的作用。