Как мне скопировать XMLList и сохранить пространство имен?

Есть ли способ скопировать XMLList и сохранить пространство имен? Кажется, когда я использую метод copy () в XMLList, пространство имен удаляется.

Код:

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 ответ

Это должно быть потому, что это s:Label узел, который содержит объявление пространства имен. xml.elements() получает список элементов XML, которые являются частью s:Labelдерево, поэтому они знают свое пространство имен. Когда вы делаете elements.copy() хотя вы получаете отдельный список элементов XML, которые больше не являются частью дерева, которое имеет xmlns:s,

Я бы посоветовал вам скопировать все дерево, начиная с s:Label, затем получить его элементы, вместо того, чтобы делать это по-другому.

Другие вопросы по тегам