2016-12-08 9 views
1

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> 

私がコピーを作るとき。

+0

私はなぜvar copy:XML = new XML(xml.toXMLString()); –

+1

Btwは、XMLListではなくXMLで 'copy()'を実行すると、名前空間を保持します。 –

答えて

1

これは、名前空間宣言を含むs:Labelノードである必要があります。 xml.elements()は、s:Labelのツリーの一部であるxml要素のリストを取得します。したがって、彼らは名前空間を知っています。 elements.copy()を実行すると、ツリーの一部ではなくなったXML要素の別のリストが得られます(xmlns:s)。

私は、s:Labelで始まる木全体をコピーしてから別の方法ではなくその要素を取得することをお勧めします。

関連する問題