PDA

Просмотр полной версии : xml to datagrid как ?


darksranger
21.10.2008, 07:31
собственно имеем

xml файл в виде

<?xml version="1.0" encoding="windows-1251" ?>
<entire><all><![CDATA[14]]></all>
<track><![CDATA[данные]></track>
<time><![CDATA[данные]></time>
<track><![CDATA[данные]></track>
<time><![CDATA[данные]></time>
</entire>


mxml код

<mx:DataGrid x="19" y="130" width="676" height="463" id="output" >
<mx:columns>
<mx:DataGridColumn headerText="Время" dataField="time"/>
<mx:DataGridColumn headerText="Трэк" dataField="track"/>
</mx:columns>
</mx:DataGrid>

функция в которую приходит xml

private function onServerAnswerlist(e:Event):void {
myXML = new XML(e.target.data); - сосбтвенно пытаюсь в datagrid, распарсировать пришедший xmllist



output.dataProvider = myXML
}

в итоге получаю

полный бардак, всмысле, получаю по одному значению в таблице, в котором лежит весь xml, в том виде в котором пришел

гуглил но чето не чего путного не нашел
что не так делаю ?

Snut
21.10.2008, 14:34
сосбтвенно пытаюсь в datagrid, распарсировать пришедший xmllist

вы уверены что приходит xmllist? Я этого не вижу например.

Molecula
21.10.2008, 18:08
всмысле, получаю по одному значению в таблице
Логично:
If you set the property to an XML object, it will be converted into an XMLListCollection with only one item.

Почитайте хелп ещё раз, внимательней.

darksranger
21.10.2008, 20:14
я уверен что получаю XMLList

на форуме тыщу раз поднималась тема, НО везде xml получали через http reqest,

а мне нужно через URLLoader, тоесть через его ответ, потому, как XML отдает php скрипт, в этом и загвоздка, как через http реализовать я знаю, а как тут не понимаю

получаю я приблизительно его так

private function sameAnswer(e:Event):void {
e.target.data
}

вобщем проблема в том что мне не понять как полученный ответ парсировать в правильный формат для dataProvaider

вобщем, как то так, чесно просидел всю ночь ( правда сидел уже уставший, ответа пока не нашел )

в голову приходят разные мысли

например парсировать построчно полученный ответ и вставлять их в ячейки, но пока не досообразил, как получить доступ, к ячейки в столбце, да и вобще идея слишком геморная :(

я приблизительно понимаю, какой ответ, должен быть для dataprovaider, загвоздка в том, что я незнаю, как к нему привести полученный ответ, через UrlLoader

darksranger
22.10.2008, 03:49
мало ли кому то пригодится я решил проблему :)



xml пришедший в ответе URLLoader'a

<root>
<all><![CDATA[15]]></all>
<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>
<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>
<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>
</root>



обратите внимание каждый блок выделен


private function serverAnswer(e:Event):void{
loadedXML = new XMLList(e.target.data)
var arr:Array = new Array();
for each (var item:XML in loadedXML){
arr.push(item.info);



}



после кода выше xml приобретает такой вид

<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>
<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>
<info>
<track><![CDATA[данные]]></track>
<time><![CDATA[данные]]></time>
</info>

тоесть мы вытащили только блоки нужные нам


далее мы его конвертируем в XMLList

var XMLL:XMLList = new XMLList(arr);

и отдаем в dataProvaider

output.dataProvider = XMLL;


все :) теперь все нормально ;)

PS
сам DataGrid

<mx:DataGrid x="19" y="130" width="676" height="600" id="output">
<mx:columns>
<mx:DataGridColumn headerText="Время" dataField="time"/>
<mx:DataGridColumn headerText="Трэк" dataField="track"/>
</mx:columns>
</mx:DataGrid>