在AS3中遇到insertChildBefore和insertChildAfter时遇到问题

时间:2008-10-09 20:16:59

标签: xml actionscript-3

我有一个XML文档:

var xml:XML = new XML(<rootNode>            
                <head> 
                    <meta name="template" content="Default" />
                </head>
                <mainSection>
                    <itemList>
                        <item>
                            <video src={this.videoURL}  />
                            <img  src={this.src}></img>
                        </item>
                    </itemList>
                </mainSection>
            </rootNode>);

我想做的是,当我遇到某些条件时,在itemList的开头插入另一个条件。

var newNode:XMLList = new XMLList("<item><video src=\"" + _videoSource + "\"></video></item>");

我能够很好地生成和跟踪newNode,但每当我尝试使用insertChildBefore添加它时,它总是返回undefined。

var contentNode:XML = new XML(xml.mainSection.itemList.item);
xml.insertChildBefore(contentNode ,newNode)

contentNode总是很好,但在尝试insertChildBeforeinsertChildAfter时总是失败。奇怪的是,如果我使contentNode不那么具体(如xml.mainSection),那么它会按预期工作。

感谢您的帮助,这让我疯了!

1 个答案:

答案 0 :(得分:5)

这里有两个问题(我现在测试了这段代码 - 它应该适合你):

  1. 变量xml不是您要插入的item节点的直接父节点。您在insertChildBefore节点上呼叫xml,但您的contentNode不是其直接子女。

  2. 您尝试在之前插入的contentNode变量是您想要的节点的副本;你不应该创建一个全新的XML对象。

  3. 请改为尝试:

    var contentNode:XML = xml.mainSection.itemList.item[0];
    var parentNode:XML = xml.mainSection.itemList[0];
    parentNode.insertChildBefore( contentNode, newNode[0] );