我使用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
一点实验表明,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" />
我觉得这是一种非常奇怪的处理方式,但它似乎就是这样做的。