Возникли проблемы с insertChildBefore и insertChildAfter в AS3 - PullRequest
3 голосов
/ 10 октября 2008

У меня есть документ 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), то это сработает, как и ожидалось.

Спасибо за любую помощь, это сводит меня с ума!

1 Ответ

5 голосов
/ 10 октября 2008

Здесь есть две проблемы (я сейчас проверил этот код - он должен работать для вас):

  1. Переменная xml не является прямым родителем вставляемого узла item. Вы вызываете insertChildBefore на узле xml, но ваш contentNode не является его прямым потомком.

  2. Переменная contentNode, которую вы пытаетесь вставить впереди, является копией нужного вам узла; Вы не должны создавать новый объект XML.

Попробуйте вместо этого:

var contentNode:XML = xml.mainSection.itemList.item[0];
var parentNode:XML = xml.mainSection.itemList[0];
parentNode.insertChildBefore( contentNode, newNode[0] );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...