0

我正在尝试通过 AS3 应用程序将某些内容保存在 XML 中。我认为我有正确的保存功能,所以我认为它在于我将数据推送到 XML 的功能。我也不确定在 XML 中删除节点的语法。

这是我的保存功能:

public function saveData():void {
            var file:File =        File.desktopDirectory.resolvePath("newPlayer.xml");

            var stream:FileStream = new FileStream()
            stream.open(file, FileMode.WRITE);

            var newXML:XML = new XML("<player></player>");
            newXML.appendChild(playerList.source);
            var str:String = newXML.toString();

            stream.writeUTFBytes(str);
            stream.close();

        }

我通过文本输入框将数据推送到 XMl 的函数:

//add a new player from text input into newPlayer.xml
            var newPlayer:XML = <player></player>;

            newPlayer.@name = myTextBox.text;

            playerData.appendChild(newPlayer.@name);

            myPlayerLabel.text = newPlayer.@name;

这在我的 init 函数中,也可以在应用程序完成时加载。我认为这是我重新启动程序时重新加载 XML 的原因:

public function init():void {
            var file:File = File.desktopDirectory.resolvePath("newPlayer.xml");
            var stream:FileStream = new FileStream();
            stream.open(file, FileMode.READ);

            var str:String = stream.readUTFBytes(stream.bytesAvailable);
            stream.close();

            playerData = XML(str);


        }

我认为问题在于输入,但我不完全确定,因为 XML 对我来说是新的。提前感谢您的帮助!

4

1 回答 1

0

我认为问题出在您用于将新数据附加到 XML 的函数中。以下行将 player 属性的值附加到现有playerData节点而不是您创建的新节点:

// Appending the attribute as a child     
playerData.appendChild(newPlayer.@name);

// Actually, you want to append the new node
playerData.appendChild(newPlayer);
于 2013-03-22T00:27:46.483 回答