0

AS3 と Flash CC を使用しています。単純な天気ウィジェットを作成しようとしていますが、Yahoo Weather API からの XML データをまったく解析できないようです。XML データが読み込まれ、XML データ全体をトレースすると出力に表示されます。

私のflaファイルのフレーム1アクションスクリプトで使用しているコードは次のとおりです。

var myXML: XML = new XML();
var XML_URL: String = "https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20in%20(select%20woeid%20from%20geo.places(1)%20where%20text%3D%22nome%2C%20ak%22)&format=xml&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys";

var myXMLURL: URLRequest = new URLRequest(XML_URL);
var myLoader: URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener(Event.COMPLETE, xmlLoaded);

function xmlLoaded(event: Event): void {
    myXML = XML(myLoader.data);
    trace("Data loaded.");
    var yweather:Namespace = new Namespace("http://xml.weather.yahoo.com/ns/rss/1.0");
    trace(myXML);   //successfully shows entire XML data
    trace(myXML.query.results.channel.description);  //unsuccessful
    trace(myXML.channel.item.yweather::condition.@temp + " °F"); //only shows °F
}

温度などの特定の XML データを返すことができない理由を知っている人はいますか? 前もって感謝します!

注:このチュートリアルを基礎として使用しました。

4

1 に答える 1

1

うーん。私のxmlは結果レベルで異なって入ってきたので、チュートリアルに基づいてデータを誤って移動するのと同じくらい簡単でした。この問題が発生した場合は、XML データのルート レベルを無視する必要があります。私の場合、「クエリ」を無視して「結果」から始めます。

正しくない:

  • クエリを含めたため失敗しました

    trace(myXML.query.results.channel.description);
    
  • 結果が含まれていないため、失敗しました

    trace(myXML.channel.item.yweather::condition.@temp + " °F");
    

訂正:

trace(myXML.results.channel.description);
trace(myXML.results.channel.item.yweather::condition.@temp + " °F");

または、次の URL を使用することもできます: http://weather.yahooapis.com/forecastrss?w=2460286と、temp のチュートリアルから取得した元のコードが機能します。

trace(myXML.channel.item.yweather::condition.@temp + " °F");

また、説明用のコードはチャネル レベルからも機能します。

trace(myXML.channel.description);

これがこの問題の誰にも役立つことを願っています!

于 2016-01-03T05:29:08.297 に答える