我正在尝试使用lua和解析一些xml文件 我坚持这个功能:
function get_node_by_id (xml, nodeId)
for i=1, #xml, 1 do
if get_attr_by_name(xml[i], 'Id') == nodeId then
print ("TRUEEEEE", i, xml[i])
return xml[i]
else
get_node_by_id(xml[i], nodeId)
end
end
end
问题在于print("TRUEEEEE", i, xml[i])
有效,但在下一行nil
中返回return xml[i]
。
我究竟做错了什么?
答案 0 :(得分:7)
您正在递归调用该函数,但只提供一次返回。如果您碰巧在第二级找到了您要查找的节点,则只返回第一级的值,这对它没有任何作用。
也许你想要这样的东西(未经测试的代码):
function get_node_by_id (xml, nodeId)
for i=1, #xml, 1 do
if get_attr_by_name(xml[i], 'Id') == nodeId then
print ("TRUEEEEE", i, xml[i])
return xml[i]
else
local node = get_node_by_id(xml[i], nodeId)
if node then return node end
end
end
end
答案 1 :(得分:2)
我认为你错过了else块中的回复:
return get_node_by_id(xml[i], nodeId)