0

我对通过 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!");
    }

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

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

非常感谢

4

1 回答 1

0

setName是正确的方法,但在您的示例中,您不是在单个节点上使用它,而是在返回的 XMLList 上使用它question.QUESTION- 从技术上讲,它不会出现在 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>
于 2012-05-27T08:11:22.397 回答