Показать сообщение отдельно
Старый 14.02.2007, 22:53
asuri вне форума Посмотреть профиль Отправить личное сообщение для asuri Найти все сообщения от asuri
  № 1  
Ответить с цитированием
asuri

Регистрация: Oct 2006
Сообщений: 44
По умолчанию Формирование ArrayCollection из xml

Добрый вечер всем.
Хочу формировать налету ArrayCollection. Изначально данные забираю с сервера в виде XML.
Трабла в том, что ArrayCollection должен быть вида:
Код:
<mx:ArrayCollection id="mxarr">
	<mx:Object  label="ColName1" text="3 jj gehg"/>
	<mx:Object  label="ColName2" text="32ggehg"/>
</mx:ArrayCollection>
атрибуты (label,text) и прочие хранятся в массиве headers.
При этом я не могу динамически создать у элементов ArrayCollection аттрибуды с соответствующими именами.

То есть надо сделать что то вроде:
Код:
var MyXML:XML;
var headers:Array=new Array("label","data");
MyXML = new XML('<root><node id="MyNode" /></root>');
MyXML.node.@headers[0]='bla bla bla';
но разумеется строка MyXML.node.@headers[0]='bla bla bla'; не прокатывает.
Вопрос №1 - какая есть альтернатива этой строке.
Вопрос №2 - если сделать trace(MyXML.children()); то результат - пустая строка. Почему так???

Что бы лучше было все понятно - привожу полный код:

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"  layout="absolute">
	<mx:Script>
		<![CDATA[
			
			import mx.collections.ArrayCollection;
			public function test_xml():void{
				var ac:ArrayCollection;
				var tmp:Array;
				var MyXML:XML;
				var headers:Array=new Array("id","title");
				MyXML = new XML('<root><node id="MyNode" /></root>');
				MyXML.node.@label='txt';
				trace(MyXML.children());
				
				tmp=new Array(MyXML);
				ac = new ArrayCollection(tmp);
				trace('\n=============\n');
				show(ac);
//				show(mxarr);
			}
			
			
			public function show(obj:ArrayCollection):void{
				for(var i:int=0;i<obj.length;i++){
					trace('obj['+i+']=Array(');
					var a:Object;
					for(a in obj[i]){
					trace('	'+a+' => '+obj[i][a]+'\a');
					}
					trace(');\n');
				}
			}
			
			
		]]>
	</mx:Script>
	
	<mx:ArrayCollection id="mxarr">
		<mx:Object id="a" label="lab1" text="3 jj gehg"/>
		<mx:Object id="b" label="lab2" text="32ggehg"/>
	</mx:ArrayCollection>
	
	<mx:Button  label="test" click="test_xml();"  x="100" y="100"/>
</mx:Application>