我有一个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
总是很好,但在尝试insertChildBefore
或insertChildAfter
时总是失败。奇怪的是,如果我使contentNode
不那么具体(如xml.mainSection
),那么它会按预期工作。
感谢您的帮助,这让我疯了!
答案 0 :(得分:5)
这里有两个问题(我现在测试了这段代码 - 它应该适合你):
变量xml
不是您要插入的item
节点的直接父节点。您在insertChildBefore
节点上呼叫xml
,但您的contentNode
不是其直接子女。
您尝试在之前插入的contentNode
变量是您想要的节点的副本;你不应该创建一个全新的XML对象。
请改为尝试:
var contentNode:XML = xml.mainSection.itemList.item[0];
var parentNode:XML = xml.mainSection.itemList[0];
parentNode.insertChildBefore( contentNode, newNode[0] );