2011-07-13 18 views
2

私が取り組んでいるプロジェクトのバンド写真を試してみるためにYQLを使っています。イメージが見つかった場合、それはXMLレスポンスで返され、私のフラッシュコードはそれをポストします。しかし、見つからなければ、フラッシュに何もしないように指示する方法はあまりよく分かりません。ここに私のコードがあります:失敗した試行が空として描くFlash AS3:XMLと未定義の値

<query yahoo:count="1" yahoo:created="2011-07-13T16:35:21Z" yahoo:lang="en-US" xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"> 
    <results> 
    <img alt="Syn photo" id="artistArtistImg" src="http://d.yimg.com/ec/image/v1/artist/266256;encoding=jpg;size=156x94" title="Syn photo"/> 
    </results> 
</query> 

XML.ignoreWhitespace = true; 
    var groupPhotoXML = new XML (e.target.data); 
    var imgRef = groupPhotoXML.results.img[0][email protected]; 

    if (imgRef != undefined){ 
    //DO STUFF. THIS IF STATEMENT DOESN'T WORK THOUGH. ALSO TRIED if(groupPhotoXML != undefined) 
    } 

ここのように成功したgrouPhotoXML応答が見えるものです。

+0

失敗した試みは、空の文字列を返すか、任意の画像srcを含んでいないXMLを返しますか?失敗した試行でe.target.dataとは何ですか? – taskinoor

答えて

3

src属性を抽出する前に、resultsおよびimg要素が存在するかどうかを確認する必要があります。これをやってみてください。

var imgRef:String; 
if(groupPhotoXML.results && groupPhotoXML.results.img[0]) 
    imgRef = groupPhotoXML.results.img[0][email protected]; 
else 
    // The response was invalid 
0

トレースが空になっているが、あなたはそれを見るためにtoXMLString()を使用する必要があるときは、右のノードを取得する可能性があります。

if(groupPhotoXML.results.img.length() > 0) trace('do something with the img nodes'); 

か、あなただけの空のsrc属性を持たないIMGのノードが必要な場合は、あなたがチェックすることができます。IMGノードはXMLListの長さをチェックして存在する場合

かを確認しますか、 @taskinoorのような空の文字列が示唆、または@srcの長さをチェックして:

imgs:XMLList = groupPhotoXML.results.img; 
for each(var img:XML in imgs) if([email protected]().length > 0) trace('valid node',[email protected]());