Как мне скопировать 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
, затем получить его элементы, вместо того, чтобы делать это по-другому.