2012-01-16 2 views
0

Я пытаюсь вставить дочерний узел в XML с помощью ActionScript следующим образом -не удается вставить дочерний элемент в XML из ActionScript3

var xml:XML = <menu> 
<item>burger</item> 
<item>soda</item>  
</menu>; 
xml.insertChildAfter(xml.item[0], <item>fries</item>); 
trace(xml); 
----------output--------------- 
<menu> 
    <item>burger</item> 
    <item>fries</item> 
    <item>soda</item> 
</menu> 
------------------------- 

выше код работает отлично, как и ожидалось, но когда я пытаюсь вставить ребенок во вложенном ребенке, я не могу вставить.

но ниже не

рабочего
var xml:XML = <menu> 
<my> 
<item>burger</item> 
<item>soda</item> 
</my> 
</menu>; 
xml.insertChildAfter(xml.my.item[0], <item>fries</item>); 
trace(xml); 
------------output------------- 
<menu> 
    <my> 
    <item>burger</item> 
    <item>soda</item> 
    </my> 
</menu> 

кроме того, он возвращает undefined и как описано в Actionscript LiveDocs -

If you call this method on an XML child that is not an element (text, attributes, comments, pi, and so on) undefined is returned. 

любая помощь/вход очень ценится, спасибо за остановки путем ,

ответ

0

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

var xml:XML = <menu> 
<my> 
<item>burger</item> 
<item>soda</item> 
</my> 
</menu>; 
xml.my.insertChildAfter(xml.my.item[0], <item>fries</item>); 
trace(xml.toXMLString()); 
+0

спасибо @ Kodiak! он работает как шарм :) –

0

Как насчет этого? Это тоже работает.

var xml:XML = <menu> 
       <my> 
        <darling> 
         <item>burger</item> 
         <item>soda</item> 
        </darling> 
       </my> 
      </menu>; 
xml..*::darling.insertChildAfter(xml..*::darling.item[0], <item>fries</item>); 
trace(xml); 
-------output------------------ 
<menu> 
    <my> 
    <darling> 
     <item>burger</item> 
     <item>fries</item> 
     <item>soda</item> 
    </darling> 
    </my> 
</menu> 
+0

Как это отличается от принятого ответа? –