Wiedziec a zrobic… To dwie rozne historie. Wydawalo mi sie ze wiem juz jak dynamicznie laczyc XML z Flex. Wczoraj wydawalo sie to proste, przed lunchem jeszcze prostrze, ale po lunchu juz nie. Choc dzieki pomocy pana Piotra deHaana z Adobe poszlo jak po masle.
W kodzie wszystko bylo OK, poza 3 literkami. Ich zmiana odblokowala mi caly projekt. Czyli projekt sie skompilowal i wyswietlil to co chcialem. Do rzeczy:
Mamy nastepujacy XML, gdzie kolejne wpisy <news> wygladaja nastepujaco:
<news> <date>18.12.2007 11:41</date> <title>Contact Centre Report</title> <lead>Week 45 - summary</lead> <content>http://127.0.0.1/site/home/news/view/item382669/</content> </news>
Aby program czytal plik dynamicznie nalezy wykonac 2 zestawy polecen:
1. Czytanie i konwersja pliku do listy:
<mx:HTTPService resultFormat=”e4x” url=”news.xml” id=”inputXML” result=”onResult(event)”/>
<mx:XMLListCollection id=”newsXML” source=”{inputXML.lastResult.news}”/>
Te magiczne 3 literki to sposob odczytu pliku XML. Zamiast wartosci ‘xml’ nalezy uzyc ‘e4x’. I dalej wszystko staje sie proste.
2. W naglowku mx:Application trzeba wymusic odswiezenie serwisu HTTPService przy pomocy funkcji send(); Za kazdym razem przy odswiezeniu aplikacji, trafia do niej najnowsze dane z pliku XML.
creationComplete=”inputXML.send()”
W dalszym ciagu aplikacji odwoluje sie bezposrednio do listy newsXML, podobnie jak w poprzednich przykladach.
W czesci skryptowej nalezaloby zabezpieczyc sie przed bledem w czytaniu zewnetrzego pliku.
Wygladaloby to nastepujaco:
<mx:HTTPService resultFormat=”e4x” url=”news.xml” id=”inputXML” result=”onResult(event)” fault=”serv_fault(event);” />
oraz kod wywolujacy okienko Alert:
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
private function serv_fault(evt:FaultEvent):void
{
mx.controls.Alert.show("Unable to load XML:n", "ERROR");
}
]]>
</mx:Script>
Koniec.
Zapraszam oczywiscie do mojego miasteczka!
0 Odpowiedzi do “Dynamiczny XML we Fleksie”
Napisz odpowiedź