使用XML在AS3中保存和删除

时间:2013-03-21 21:10:47

标签: actionscript-3

我正在尝试通过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对我来说是新的。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分: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);