HTTPService Resultado - comprobación número de elementos con un nombre especificado
-
19-09-2019 - |
Pregunta
Tengo una pregunta acerca HTTPService y los datos que devuelve.
Bueno, vamos a considerar este XML:
<PhotoGalleryData>
<Photo>
<id>1</id>
<name>Summer Vacation</name>
<description>In vacation</description>
<fullImage>originalImg/1.JPG</fullImage>
</Photo>
<Photo>
<id>2</id>
<name>Winter Vacation</name>
<description>coold</description>
<fullImage>originalImg/2.JPG</fullImage>
</Photo>
</PhotoGalleryData>
Como ves, tengo dos instancias de foto , que se recupera mediante un HTTPService, pues bien en el Evento Resultado de ese mismo HTTPService i querría que el recuento de la cantidad de instancias con nombre < strong> foto que como es devuelta a la .lastResult
.
Esta es una pregunta tonta, pero no puedo encontrar en cualquier lugar en Adobe Docs.
Por supuesto ninguna ayuda, indirecta, la sugerencia es muy apreciada.
Medoix
Tengo que estar ciego o algo así, porque todavía devuelve 0.
algo que falta aquí?
MXML
<mx:HTTPService id="getData"
url="{XMLDataFileLocation}"
showBusyCursor="true"
fault="getDataFaultHandler()"
result="getDataResultHandler(event)"/>
ActionScript
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
private var xmlData:XMLList;
private var numItems:int;
private function getDataResultHandler(evt:ResultEvent):void
{
if (evt.result.PhotoGalleryData)
{
xmlData = XML(evt.result).descendants("Photo");
numItems = xmlData.length();
Alert.show('Nº '+numItems,'num de Photo');
}
}
Solución
en la función http_result usted tiene que va a guardar estos datos en un objeto XMLList para un ejemplo y luego puede llamar a la xmllist.length ();
private var xmlData:XMLList;
private var numItems:Integer;
private function HttpResult(evt:ResultEvent):void {
if (evt.result.PhotoGalleryData) {
xmlData = XML(evt.result).descendants("Photo");
numItems = xmlData.length();
}
}
EDIT: Haga el siguiente ...
Cambiar
<mx:HTTPService id="getData"
url="{XMLDataFileLocation}"
showBusyCursor="true"
fault="getDataFaultHandler()"
result="getDataResultHandler(event)"/>
Para ...
<mx:HTTPService id="getData"
url="{XMLDataFileLocation}"
resultFormat="e4x";
showBusyCursor="true"
fault="getDataFaultHandler()"
result="getDataResultHandler(event)"/>
Esto es trabajo para mí.
Otros consejos
Sólo hacer lo siguiente. se va a resolver sus problemas descritos;)
private var xmlData:XMLList;
private var numItems:Integer;
private function HttpResult(evt:ResultEvent):void {
if (evt.result.PhotoGalleryData) {
numItems = ArrayCollection(evt.result.PhotoGalleryData.Photo).length;
}
}
RSTanvir