我很擅长通过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子项。
有人可以帮我解释一下吗?
非常感谢
答案 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>