2

我正在使用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

测试.xml:

<?xml version="1.0" ?>
<level>
  <bg>images/bg1.png</bg>
</level>

结果:错误:test.xml:没有这样的文件或目录

没有比这更简单的了。为什么看不到文件?

4

3 回答 3

4

也许文件名是相对于当前工作目录解释的,而不是源代码的目录。我不知道 Lua,但这对于大多数语言来说是正常的:这是标准 unix API 的工作方式(我想 Windows 也是如此),而大多数语言只是使用它们。我所知道的解释与程序相关的路径的唯一语言是 Ant。

因此,在运行程序之前将目录更改为项目目录,或者(更好)用绝对路径替换相对路径。或者,如果有办法找出当前脚本的位置,您可以使用它来构造绝对路径。

于 2011-04-07T16:45:32.810 回答
1

您可能需要使用 procmon 或 filemon 之类的工具来找出使用了什么文件系统 io,以及它失败的原因。

于 2011-04-07T16:37:25.017 回答
1

Lua 不擅长处理文件夹。我的意思是它甚至没有文件夹的概念。它将它留给通常嵌入它的“主机”程序。

我查看了源代码,您遇到的错误似乎是因为io.open无法找到文件。发生这种情况是因为 io.open 无法推断出脚本的“工作文件夹”。

如果你给它绝对路径而不是相对路径,你的程序应该可以正常工作。

如果您确实需要使用相对文件夹,我们最好的选择是使用现有之一,例如LuaFileSystem

于 2011-04-07T17:19:22.217 回答