2

私はLuaXmlを使用しています。プロジェクトには、main.lua、test.xml、およびxml_parser.luaの3つのファイルがすべてルートレベルにあります。

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:そのようなファイルまたはディレクトリはありません

これほど単純なものはありません。なぜファイルが表示されないのですか?

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 に答える