HTTPService Result - проверка количества элементов с указанным именем - PullRequest
0 голосов
/ 13 ноября 2009

У меня вопрос по поводу HTTPService и данных, которые он возвращает.

Хорошо, давайте рассмотрим этот 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>

Как вы видите, у меня есть два экземпляра Photo , которые будут получены с использованием HTTPService, а затем в случае Result Event того же HTTPService я бы хотел, чтобы он подсчитал количество экземпляров с именем Фото он как вернулся на .lastResult.

Это глупый вопрос, но я не могу найти его нигде в Adobe Docs.

Конечно, любая помощь, подсказка, предложение приветствуются.


Medoix

Я должен быть слепым или что-то в этом роде, потому что он все еще возвращает 0.

Чего-то здесь не хватает?

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');
    }
}

Ответы [ 2 ]

2 голосов
/ 13 ноября 2009

в имеющейся у вас функции http_result вы будете помещать эти данные в XMLList для примера, а затем вы можете вызвать 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();
    }
}

РЕДАКТИРОВАТЬ: Сделайте следующее ...

Изменение

<mx:HTTPService id="getData"
    url="{XMLDataFileLocation}"
    showBusyCursor="true"
    fault="getDataFaultHandler()"
    result="getDataResultHandler(event)"/>

Для того, чтобы ...

<mx:HTTPService id="getData"
    url="{XMLDataFileLocation}"
    resultFormat="e4x";
    showBusyCursor="true"
    fault="getDataFaultHandler()"
    result="getDataResultHandler(event)"/>

Это работает для меня.

0 голосов
/ 13 ноября 2009

Просто сделайте следующее. это решит ваши проблемы;)

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

...