【问题标题】:Does setName function (AS 3.0) alter XML file?setName 函数 (AS 3.0) 是否更改 XML 文件?
【发布时间】:2012-05-27 07:47:00
【问题描述】:

我对通过 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 子项被重命名。

谁能帮我解释一下?

非常感谢

【问题讨论】:

    标签: xml actionscript-3 flash-cs5


    【解决方案1】:

    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>
    

    【讨论】:

    • 如果我的 XML 列表正好有 1 个 QUESTION 节点,这是否也适用?我想如果它只有一个名称的节点,您可以直接使用它。如果我只想更改一个节点怎么办?谢谢
    • 当列表中只有一个问题时,它的工作方式相同。如果要更改特定节点,可以通过指定该节点的索引直接应用该方法:question.QUESTION[0].setName("WRONG")
    • 我仍然无法正确处理。首先,我确保只有一个名为 QUESTION 的孩子,然后我使用原始代码。之后我将其更改为question.QUESTION[0].setName("WRONG"),但没有任何变化。一件有趣的事情是,当我使用 trace(question.children()) 时,出现了错误的孩子,但在存储在硬盘中的 XML 文件中,它仍然是 QUESTION
    • 我为单个更改的节点添加了一个示例,并在代码 sn-p 中包含了简单的 XML 数据 - 试试这个,然后看看代码中的其他地方可能出现错误。
    • 抱歉,我误导了你。经过一段时间的试验,我设法看到如果 xml 纯粹在应用程序本身中,那么我的代码已经达到了它的目的。但是,如果我想更改与源文件位于同一文件夹中的真实 xml 文件,那么我将失败。我认为,基本上,我只更改了问题变量,而不是加载到其中的文件。因此,我的问题应该是如何更改加载到变量中的文件。我已经编辑了我的问题。给您带来的不便,我们深表歉意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2023-01-05
    相关资源
    最近更新 更多