Récupérer des éléments et attributs XML avec n'importe quel namespace
Bonjour,
je suis débutant en flex 3, mon problème est le suivant:
j'essaie d'appeler un httpservice nommé gbif et j'aimerai afficher les résultats dans un datagrid pour cela je dois parcourir son arbre xml et comme les noeuds ont cette forme <gbif:gbifresponse> j'amerai savoir comment y accéder à ce genre de noeud en flex 3.
j'ai pu afficher le résultat dans un alert show mais pas dans mon datagrid
voici le lien vers le httpservice de gbif: http://data.gbif.org/ws/rest/occurre...sourcekey=8438
voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:gbif="http://portal.gbif.org/ws/response/gbif"
layout="vertical">
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
[Bindable] var indice:XML;
[Bindable] var attributes:XMLList;
public function processResult(evt:ResultEvent):void{
// var gbif:Namespace = new Namespace("http://data.gbif.org/ws/rest/resource/get/8438");
namespace gbif='http://portal.gbif.org/ws/response/gbif'
use namespace gbif;
indice= new XML(evt.result);
Alert.show(indice.toXMLString()); // flux xml
attributes=new XMLList(indice.gbif::dataProviders.gbif::dataProvider.gbif::dataResources.gbif::dataResource.gbif::name);
Alert.show(attributes.text());
//Alert.show(indice.lastResult.gbifResponse.toXMLString());
nbResult.text ="Nombres total de résultats:";
nbResult.text+=indice.totalResultsAvailable;
}
public function faultHandler(evt:FaultEvent):void{
Alert.show("Une erreur s'est produite\n:"+ "\nDetails\n"+ "faultCode:"+ evt.fault.faultDetail+"\n"+ "faultstring:"+ evt.fault.faultString+ "\n");
}
]]>
</mx:Script>
<mx:HTTPService id="birds" url="http://data.gbif.org/ws/rest/taxon/list" result="processResult(event)" fault="faultHandler(event)" method="GET" resultFormat="e4x" showBusyCursor="true">
<mx:request xmlns="">
<dataresourcekey>
{formKey.text}
</dataresourcekey>
<maxresults>
10
</maxresults>
</mx:request>
</mx:HTTPService>
<!--get-->
<mx:Form label="paramètres da la requête">
<mx:FormItem label="Entrez une clé valide(8438)">
<mx:TextInput id="formKey"/>
</mx:FormItem>
</mx:Form>
<mx:DataGrid dataProvider="{attributes}" width="900" height="300">
<mx:columns>
<mx:DataGridColumn dataField="gbif:name"/>
<!--<mx:DataGridColumn dataField="tn:nameComplete"/>
<mx:DataGridColumn dataField="to:earliestDateCollected"/>
<mx:DataGridColumn dataField="to:latestDateCollected"/>
<mx:DataGridColumn dataField="to:decimalLongitude"/>
<mx:DataGridColumn dataField="to:country"/>-->
</mx:columns>
</mx:DataGrid>
<mx:Button label="lancer la recherche" click="birds.send()"/>
<mx:Label id="nbResult"/>
</mx:Application> |
Merci