无法从actionscript3插入XML中的子元素

时间:2012-01-16 10:40:30

标签: xml actionscript-3

我试图通过actionscript在xml中插入子节点,如下所示 -

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.

非常感谢任何帮助/输入,感谢您停下来。

2 个答案:

答案 0 :(得分: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());

答案 1 :(得分: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>