setName函数(AS 3.0)是否会更改XML文件?

时间:2012-05-27 07:47:00

标签: xml actionscript-3 flash-cs5

我很擅长通过Flash和Action Script 3.0处理xml文件。 我写这段代码的目的是将所有的QUESTION孩子改成WRONG。

var urlRequest:URLRequest = new URLRequest("question.xml");
        var urlLoader:URLLoader = new URLLoader();
        urlLoader.dataFormat = URLLoaderDataFormat.TEXT;
        urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete, false, 0, true);
        urlLoader.load(urlRequest);


    private function urlLoader_complete(e:Event):void {
        var question:XML = new XML(e.target.data);
        question.QUESTION.setName("WRONG");
        trace("FINISH!");
    }

程序运行,我成功地得到了完成跟踪一词。但是,当我检查xml文件question.xml时,没有重命名其中一个QUESTION子项。

有人可以帮我解释一下吗?

非常感谢

1 个答案:

答案 0 :(得分:0)

setName是正确的方法,但在您的示例中,您没有在单个节点上使用它,而是在question.QUESTION返回的XMLList上使用它 - 从技术上讲,它不会出现在XML树,因此不反映XML输出中的更改。

您需要遍历实际节点才能获得结果:

var question:XML = <QUESTIONS><QUESTION /><QUESTION /></QUESTIONS>;
var questions:XMLList = question.QUESTION;
for each( var node:XML in questions )
    node.setName( "WRONG" );
trace ( question ); // output: <QUESTIONS><WRONG /><WRONG /></QUESTIONS>

或者对于单个节点:

var question:XML = <QUESTIONS><QUESTION /></QUESTIONS>;
var questions:XMLList = question.QUESTION;
questions[0].setName( "WRONG" );
trace ( question ); // output: <QUESTIONS><WRONG /></QUESTIONS>