2016-12-08 8 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()을 수행 할 때 더 이상 xmlns:s 인 트리의 일부가 아닌 XML 요소의 개별 목록을 얻습니다.

s:Label으로 시작하는 전체 트리를 복사 한 다음 그 요소를 가져 오는 대신 다른 방법으로 사용하는 것이 좋습니다.