我正在使用LuaXml。我的项目中有3个文件,都在根级别:main.lua,test.xml和xml_parser.lua。
main.lua:
require("xml_parser")
local obj,err = XmlParser:ParseXmlFile("test.xml")
if(not err) then
//do something with the xml
else
print("ERROR: "..err);
end
的test.xml:
<?xml version="1.0" ?>
<level>
<bg>images/bg1.png</bg>
</level>
结果: 错误:test.xml:没有这样的文件或目录
它不能比这简单得多。为什么看不到文件?
答案 0 :(得分:4)
也许文件名是相对于当前工作目录解释的,而不是源代码的目录。我不认识Lua,但这对于大多数语言来说都是正常的:它是标准的unix API如何工作(我想Windows也是如此),大多数语言只是使用它们。我所知道的唯一一种解释相对于程序的路径的语言是Ant。
因此,在运行程序之前将目录更改为项目目录,或者(更好)用绝对路径替换相对路径。或者,如果有办法找出当前脚本的位置,您可以使用它来构造绝对路径。
答案 1 :(得分:1)
您可能希望使用procmon或filemon之类的工具来查找使用的文件系统,以及它失败的原因。
答案 2 :(得分:1)
Lua不擅长处理文件夹。而且,我的意思是它甚至没有文件夹的概念;它将它留给通常嵌入它的“主机”程序。
我查看了源代码,因为io.open无法找到文件,所以您遇到的错误似乎发生了。发生这种情况是因为io.open无法推断出脚本的“工作文件夹”。
如果你给它的绝对路径而不是相对的路径,你的程序应该可以正常工作。
如果您确实需要使用相关文件夹,我们最好的选择是使用现有libraries之一,例如LuaFileSystem。