初めての方はこちらから質問していますが、フォーマットをもっと良くする方法を学ぶのは初めてです。 私はflexを学び始めて、本を手に入れてその中の例に従おうとしました。しかし、私は問題を抱えていました。私は基本的に製品のリストを持っているXMLを返すJSPページを持っています。私はこのXMLを解析しようとしています。言い換えれば、製品を通過し、各製品ノードのオブジェクトを作成し、それらをArrayCollectionに格納しようとしています。私が持っていると信じている問題は、xmlをナビゲートする正しい方法を使用していないということです。XMLをフレックスで処理する
サーバから返されるXMLは次のようになります。
<?xml version="1.0" encoding="ISO-8859-1"?><result type="success">
<products>
<product>
<id>6</id>
<cat>electronics</cat>
<name>Plasma Television</name>
<desc>65 inch screen with 1080p</desc>
<price>$3000.0</price>
</product>
<product>
<id>7</id>
<cat>electronics</cat>
<name>Surround Sound Stereo</name>
<desc>7.1 surround sound receiver with wireless speakers</desc>
<price>$1000.0</price>
</product>
<product>
<id>8</id>
<cat>appliances</cat>
<name>Refrigerator</name>
<desc>Bottom drawer freezer with water and ice on the door</desc>
<price>$1200.0</price>
</product>
<product>
<id>9</id>
<cat>appliances</cat>
<name>Dishwasher</name>
<desc>Large capacity with water saver setting</desc>
<price>$500.0</price>
</product>
<product>
<id>10</id>
<cat>furniture</cat>
<name>Leather Sectional</name>
<desc>Plush leather with room for 6 people</desc>
<price>$1500.0</price>
</product>
</products></result>
そして、私は次のような製品を反復処理しようとするフレックスコード持っている:私はできる、トレースと
private function productListHandler(e:JavaFlexStoreEvent):void
{
productData = new ArrayCollection();
trace(JavaServiceHandler(e.currentTarget).response);
for each (var item:XML in JavaServiceHandler(e.currentTarget).response..product)
{
productData.addItem({
id:item.id,
item:item.name,
price:item.price,
description:item.desc
});
}
}
をサーバーから返されたxmlを参照してください。しかし、xmlが空であるかのようにループ内に入ることはできません。言い換えれば、JavaServiceHandler(e.currentTarget).response..productは何も返さなければなりません。誰かが助けてくれる/私が間違っている可能性があることを指摘できますか?
私JavaServiceHandlerクラスは次のようになります。
package com.wiley.jfib.store.data
{
import com.wiley.jfib.store.events.JavaFlexStoreEvent;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.URLLoader;
import flash.net.URLRequest;
public class JavaServiceHandler extends EventDispatcher
{
public var serviceURL:String = "";
public var response:XML;
public function JavaServiceHandler()
{
}
public function callServer():void
{
if(serviceURL == "")
{
throw new Error("serviceURL is a required parameter");
return;
}
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, handleResponse);
loader.load(new URLRequest(serviceURL));
// var httpService:HTTPService = new HTTPService();
// httpService.url = serviceURL;
// httpService.resultFormat = "e4x";
// httpService.addEventListener(Event.COMPLETE, handleResponse);
// httpService.send();
}
private function handleResponse(e:Event):void
{
var loader:URLLoader = URLLoader(e.currentTarget);
response = XML(loader.data);
dispatchEvent(new JavaFlexStoreEvent(JavaFlexStoreEvent.DATA_LOADED));
// var httpService:HTTPService = HTTPService(e.currentTarget);
// response = httpService.lastResult.product;
// dispatchEvent(new JavaFlexStoreEvent(JavaFlexStoreEvent.DATA_LOADED));
}
}
}
私は私としてこれを参照し、それが現実ではないですが。これは、動作しないコードサンプルとして、Flexの本から来て、図に行く。
何か助けていただければ幸いです。
ジョン
Aethexにお返事ありがとうございます。私もそれを試みましたが、同じ結果になるでしょう。 –