Проблема с insertChildAfter для xml в actionsctipt 3 - PullRequest
0 голосов
/ 10 мая 2011

У меня много проблем с вставкой дочернего элемента после существующего узла, который ОЧЕНЬ вложен в мой XML. Я пытаюсь вставить другой узел IObject под object3_LIST3.

Я пробовал ту же схему, что и Возникли проблемы с insertChildBefore и insertChildAfter в AS3 с этим. Это всегда выводит undefined, и я не могу понять, почему .. Кто-нибудь может помочь?

Если я отслеживаю contentNode и parentNode, он выдает:

object3_LIST3

и

<objects>
  <IObject>object3_LIST3</IObject>
</objects>

Как будто в документ вообще не было внесено никаких изменений ...

var contentNode:XML = xml.Menu.menuArr.HeadMenuItem[1].subMenu.subMenuItem[1].objects[0];
var parentNode:XML = xml.Menu.menuArr.HeadMenuItem[1].subMenu.subMenuItem[1].objects.IObject[0];
xml = parentNode.insertChildAfter( contentNode, xmlString );
trace(xml);

<PandemicMenu>
    <Menu>
        <menuArr>
            <HeadMenuItem>
                <subMenu>
                    <IObject>
                        object1_LIST1
                    </IObject>
                    <IObject>
                        object2_LIST1
                    </IObject>
                    <IObject>
                        object3_LIST1
                    </IObject>
                </subMenu>
            </HeadMenuItem>

            <HeadMenuItem>
                <subMenu>
                    <IObject>
                        object1_LIST2
                    </IObject>
                    <subMenuItem>
                        <objects>
                            <IObject>
                                object2_LIST2
                            </IObject>
                        </objects>
                    </subMenuItem>
                    <subMenuItem>
                        <objects>
                            <IObject>
                                object3_LIST3
                            </IObject>
Want to insert new IObject here
                        </objects>
                    </subMenuItem>
                </subMenu>
            </HeadMenuItem>
        </menuArr>
    </Menu>
</PandemicMenu>

1 Ответ

0 голосов
/ 15 июня 2011

Ваш родительский узел и дочерние узлы переключаются.Ваш дочерний узел:

var contentNode:XML = xml.Menu.menuArr.HeadMenuItem[1].subMenu.subMenuItem[1].objects[0];

, который будет трассировать следующее с contentNode.toXMLString():

<objects>
  <IObject>object3_LIST3</IObject>
</objects>

, так как в состоянии документа: "Если child1 указан, но он не существуетв объекте XML объект XML не изменяется и возвращается undefined. "http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/XML.html#insertChildAfter%28%29

Проблема может заключаться в том, что вы просите дочерний узел найти его родительский узел, который он не может найти, и поэтому оригинал не изменен.Попробуйте сделать следующее:

var parentNode:XML = xml.Menu.menuArr.HeadMenuItem[1].subMenu.subMenuItem[1].objects[0];
var contentNode:XML = xml.Menu.menuArr.HeadMenuItem[1].subMenu.subMenuItem[1].objects.IObject[0];
xml = parentNode.insertChildAfter( contentNode, xmlString );
trace(xml);

Все, что я сделал, - это переключил содержимое XML-объектов parentNode и contentNode.

...