【问题标题】:How to write into XML file in Haxe?如何在 Haxe 中写入 XML 文件?
【发布时间】:2013-08-11 19:49:24
【问题描述】:

我正在使用 Haxe 和 OpenFL,并且我有一个生成 Xml 文件的程序。

但是,我不知道如何保存该文件。我可以创建 Xml 树并检查它是否有效,但对于我的生活,我无法弄清楚如何编写文件。

那么,简单来说,如何在 Haxe 中编写(和创建)文件?我希望能够将我新创建的 Xml 文件(它们用作我的程序的一种设置文件和初始化文件)保存在计算机上,以便我以后可以加载它?

【问题讨论】:

    标签: haxe nme openfl


    【解决方案1】:

    写完这个问题就找到了解决办法。

    解决方法是先用 sys.io.File.write() 创建文件,然后用 File.saveContent() 保存数据。你可以用 toString 函数从 XML 中获取字符串,最终的解决方案是这样的这个:

        if (!FileSystem.exists("maps"))
        {
            FileSystem.createDirectory("maps");
        }
        var number:Int = 1;
        if (FileSystem.exists("maps/" + filename + ".xml"))
        {
            while(FileSystem.exists("maps/" + filename + number +".xml"))
            {
                number++;
            }
    
            filename = filename + number;
        }
    
    
        File.write("maps/" + filename + ".xml", false);
        File.saveContent("maps/" + filename + ".xml", root.toString());
    

    这将检查目录是否存在,如果不存在,则创建它,如果文件存在,则创建一个新的编号文件而不是覆盖它(目前,仍在使用保存功能)

    此解决方案仅适用于 c++,尚未对其他解决方案进行过多测试,但 Flash 无法正常工作

    【讨论】:

    • 你需要File.write吗?我认为File.save content() 应该足够了。这应该适用于所有“sys”平台:cpp、neko、php。我很惊讶 C# 和 Java 还不支持这些标准类。如果你感兴趣的话,我相信还有 Air 和 NodeJS 的实现。如果是这样,请告诉我,我会找到链接...
    • 我发现 File.write() 创建文件,而 File.saveContent() 将数据保存到文件中。所以,如果你想创建一个新文件,而不是写入现有文件,你需要使用 File.write() 来创建它。
    • 在这种情况下使用 File.write() 是不正确的。 File.saveContent() 将数据写入新文件,或者,如果该文件已经存在,则替换其所有内容(请参阅implementation)。如果您留下那个打开的文件描述符,那么在这里使用File.write() 是一个无操作甚至可能是一个错误。最后,您无法在 Flash 上运行它的原因是 sys.* API 仅适用于所谓的“sys”目标(Neko、Java、C++ ...)。
    猜你喜欢
    • 1970-01-01
    • 2021-01-15
    • 2011-03-04
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多