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