【问题标题】:Trouble with insertChildAfter for xml in actionsctipt 3actionsctipt 3 中 xml 的 insertChildAfter 出现问题
【发布时间】:2011-06-16 01:34:51
【问题描述】:

在非常嵌套在我的 XML 中的现有节点之后插入子节点时遇到了很多麻烦。我正在尝试在 object3_LIST3 下插入另一个 IObject 节点。

我已经尝试了与Having trouble with insertChildBefore and insertChildAfter in AS3 相同的方案。这总是输出未定义,我似乎无法弄清楚为什么..有人可以帮忙吗?

如果我跟踪 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>

【问题讨论】:

  • 跟踪 contentNode 和 parentNode 会得到什么?
  • @Adam Harte 在上面添加了输出,它的输出就像没有添加到文档中一样。

标签: xml flash actionscript-3 e4x


【解决方案1】:

您的父节点和子节点已切换。您的子节点是:

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 对象的内容。

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    相关资源
    最近更新 更多