在我的XML中非常嵌套的现有节点之后插入子节点时遇到了很多麻烦。我正在尝试在object3_LIST3下插入另一个IObject节点。
我已经尝试了与Having trouble with insertChildBefore and insertChildAfter in 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>
答案 0 :(得分:0)
您的父节点和子节点已切换。您的子节点是:
var contentNode:XML = xml.Menu.menuArr.HeadMenuItem[1].subMenu.subMenuItem[1].objects[0];
使用contentNode.toXMLString()
跟踪以下内容:
<objects>
<IObject>object3_LIST3</IObject>
</objects>
由于文档声明:“如果提供了child1,但它在XML对象中不存在,则不会修改XML对象并返回未定义的内容。” 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);
我所做的就是切换parentNode和contentNode XML对象的内容。