2008-10-09 11 views
3

J'ai un document XML:problèmes avec insertChildBefore et insertChildAfter en AS3

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>); 

Ce que je voudrais faire, est lorsque certaines conditions me sont, insérez une autre au début de itemList.

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

Je suis en mesure de générer et tracer newNode très bien, mais chaque fois que j'essaie d'ajouter à l'aide insertChildBefore, il revient toujours pas défini.

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

contentNode traces toujours bien, mais il échoue toujours lorsque vous essayez insertChildBefore ou insertChildAfter. La chose étrange est, si je fais contentNode moins spécifique (comme xml.mainSection) puis ça continue comme prévu.

Merci pour toute aide, cela me rend fou!

Répondre

5

Il y a deux problèmes ici (je l'ai maintenant testé ce code - il devrait fonctionner pour vous):

  1. La xml variable n'est pas le parent direct du nœud item vous insérez. Vous appelez insertChildBefore sur le nœud xml, mais votre contentNode n'est pas son enfant direct. La variable contentNode que vous essayez d'insérer est copie du nœud que vous voulez; vous ne devriez pas créer un nouvel objet XML.

Essayez ceci:

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

merci! Je pense que nous sommes sur la bonne voie ici, mais parentNode arrive à zéro. – nerdabilly

+0

Très bien, j'ai mis à jour la réponse avec quelque chose qui fonctionne pour moi. –

+0

qui a fonctionné! Merci! – nerdabilly