如何复制XMLList并保留命名空间?

时间:2016-12-08 12:43:52

标签: xml actionscript-3 flash flex e4x

有没有办法复制XMLList并保留命名空间?当我在XMLList上使用copy()方法时,似乎正在删除命名空间。

代码:

var xml:XML = <s:Label xmlns:s="library://ns.adobe.com/flex/spark"><s:color>red</s:color>
        test level</s:Label>;

var elementsXMLList:XMLList = xml.elements();
trace(elementsXMLList.toXMLString()); // has namespaces

var elementsCopy:XMLList = elementsXMLList.copy();
trace(elementsCopy.toXMLString()); // does not have namespaces

elementsXMLList.toXMLString():

<s:color xmlns:s="library://ns.adobe.com/flex/spark">red</s:color>

elementsCopy()。toXMLString():

<color xmlns="library://ns.adobe.com/flex/spark">red</color>

我需要能够在制作副本时保留命名空间。

1 个答案:

答案 0 :(得分:1)

这必须是因为s:Label节点包含名称空间声明。 xml.elements()会为您提供属于s:Label树的xml元素的列表,因此他们知道自己的命名空间。当您执行elements.copy()时,您会得到一个单独的XML元素列表,这些元素不再是具有xmlns:s的树的一部分。

我建议您从s:Label开始复制整个树,然后获取其元素,而不是以另一种方式进行。