我正在使用YQL尝试为我正在处理的项目找到乐队照片。如果找到了图像,则会在XML响应中返回该图像,并且我的Flash代码会将其发布。但如果找不到,我不太清楚怎么告诉flash不要做任何事情。这是我的代码:
XML.ignoreWhitespace = true;
var groupPhotoXML = new XML (e.target.data);
var imgRef = groupPhotoXML.results.img[0].@src;
if (imgRef != undefined){
//DO STUFF. THIS IF STATEMENT DOESN'T WORK THOUGH. ALSO TRIED if(groupPhotoXML != undefined)
}
以下是成功的grouPhotoXML响应:
<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>
不成功的尝试追溯为空。
答案 0 :(得分:3)
在尝试提取src
属性之前,您应该检查是否存在results
和img
元素。试着这样做:
var imgRef:String;
if(groupPhotoXML.results && groupPhotoXML.results.img[0])
imgRef = groupPhotoXML.results.img[0].@src;
else
// The response was invalid
答案 1 :(得分:0)
当跟踪为空时,您可能会获得正确的节点,但您需要使用toXMLString()来查看它。
您可以通过检查XMLList的长度来检查img节点是否存在:
if(groupPhotoXML.results.img.length() > 0) trace('do something with the img nodes');
或者,如果你只需要没有空src属性的img节点,你可以检查像@taskinoor建议的空字符串,或者检查@src的长度:
imgs:XMLList = groupPhotoXML.results.img;
for each(var img:XML in imgs) if(img.@src.toXMLString().length > 0) trace('valid node',img.@src.toXMLString());