【发布时间】:2014-08-14 03:17:06
【问题描述】:
我正在使用 LuaXml 将从网络接收到的 xml 字符串转换为 Lua 表,但遇到了两个问题。任何人都可以帮助指出问题吗?谢谢!
1) xml.eval 返回一个包含 4 个条目而不是 3 个条目的表。我的意图是获得 3 个“预设”条目,但得到 4 个条目,最后一个显示“预设”。
2) 我希望在 for 循环之前使用 tbl.find("preset") 获取“preset”的 3 个条目并获取每个条目的属性条目,但 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
【问题讨论】:
-
luaxml是否需要对这些引号进行转义,或者lua因为您使用双引号来括住字符串?如果您使用单引号或 lua 长字符串 ([[...]]) 语法引用字符串,我想您不需要转义这些引号。 -
你的代码的输出是什么?
-
@Etan 双引号问题解决了。谢谢。
-
而且,如果你使用
for k, v in pairs(tbl) do,你可以printf("name: %s, id: %s, url: %s", v.name, v.id, v.url)(prtinf定义为:function printf(s, ...) return s:format(...) end -
@Advert 感谢您的评论,我不明白 pairs 功能。目标是检索每个预设条目并将属性放入 Lua 表中。上面的代码只是打印。但我不知道为什么 xml.eval 返回 4 个条目
标签: xml-parsing lua lua-table