我在AIR应用中解析youtube视频Feed。 使用jquery来解析它。
$(feed).find("entry").each(function()
{
var tit = $(this).find('title');
alert(tit.text());
}
似乎在解析category
(类别标签以不同的方式关闭)之后,它无法解析文档的其余部分。上面的代码成功警告文本直到updated
标记。什么是解决方案
<entry gd:etag='W/"C0AMRn47eCp7ImA9WxRQGUw."'>
<id>tag:youtube,2008:video:ZTUVgYoeN_b</id>
<published>2008-07-05T19:56:35.000-07:00</published>
<updated>2008-07-18T07:21:59.000-07:00</updated>
<category scheme='http://schemas.google.com/g/2005#kind'
term='http://gdata.youtube.com/schemas/2007#video'/>
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat'
term='Shopping'/>
<category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat'
term='parkas'/>
<category scheme='http://gdata.youtube.com/schemas/2007/categories.cat'
term='People' label='People'/>
<title>Shopping for Coats</title>
<content type='application/x-shockwave-flash'
src='http://www.youtube.com/v/ZTUVgYoeN_b?f=gdata_standard...'/>
<link rel='alternate' type='text/html'
href='http://www.youtube.com/watch?v=ZTUVgYoeN_b'/>
<link rel='http://gdata.youtube.com/schemas/2007#video.responses'
type='application/atom+xml'
href='http://gdata.youtube.com/feeds/api/videos/ZTUVgYoeN_b/responses?v=2'/>
<link rel='http://gdata.youtube.com/schemas/2007#video.ratings'
type='application/atom+xml'
href='http://gdata.youtube.com/feeds/api/videos/ZTUVgYoeN_b/ratings?v=2'/>
<link rel='http://gdata.youtube.com/schemas/2007#video.complaints'
type='application/atom+xml'
href='http://gdata.youtube.com/feeds/api/videos/ZTUVgYoeN_b/complaints?v=2'/>
<link rel='http://gdata.youtube.com/schemas/2007#video.related'
type='application/atom+xml'
href='http://gdata.youtube.com/feeds/api/videos/ZTUVgYoeN_b/related?v=2'/>
<link rel='http://gdata.youtube.com/schemas/2007#mobile'
type='text/html' href='http://m.youtube.com/details?v=ZTUVgYoeN_b'/>
<link rel='self' type='application/atom+xml'
href='http://gdata.youtube.com/feeds/api/standardfeeds/top_rated/v/ZTUVgYoeN_b?v=2'/>
<author>
<name>andyland74</name>
<uri>http://gdata.youtube.com/feeds/api/users/andyland74</uri>
</author>
<media:group>
<media:title type='plain'>Shopping for Coats</media:title>
<media:description type='plain'>
What could make for more exciting video?
</media:description>
<media:keywords>Shopping, parkas</media:keywords>
<yt:duration seconds='79'/>
<yt:videoid>ZTUVgYoeN_b</yt:videoid>
<media:player url='http://www.youtube.com/watch?v=ZTUVgYoeN_b'/>
<media:credit role='uploader' scheme='urn:youtube'>andyland74</media:credit>
<media:category label='People'
scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>People
</media:category>
<media:content
url='http://www.youtube.com/v/ZTUVgYoeN_b?f=gdata_standard...'
type='application/x-shockwave-flash' medium='video'
isDefault='true' expression='full' duration='215' yt:format='5'/>
<media:content
url='rtsp://rtsp2.youtube.com/ChoLENy73bIAEQ1kgGDA==/0/0/0/video.3gp'
type='video/3gpp' medium='video'
expression='full' duration='215' yt:format='1'/>
<media:content
url='rtsp://rtsp2.youtube.com/ChoLENy73bIDRQ1kgGDA==/0/0/0/video.3gp'
type='video/3gpp' medium='video'
expression='full' duration='215' yt:format='6'/>
<media:thumbnail url='http://img.youtube.com/vi/ZTUVgYoeN_b/2.jpg'
height='97' width='130' time='00:00:03.500'/>
<media:thumbnail url='http://img.youtube.com/vi/ZTUVgYoeN_b/1.jpg'
height='97' width='130' time='00:00:01.750'/>
<media:thumbnail url='http://img.youtube.com/vi/ZTUVgYoeN_b/3.jpg'
height='97' width='130' time='00:00:05.250'/>
<media:thumbnail url='http://img.youtube.com/vi/ZTUVgYoeN_b/0.jpg'
height='240' width='320' time='00:00:03.500'/>
</media:group>
<yt:statistics viewCount='383290' favoriteCount='7022'/>
<gd:rating min='1' max='5' numRaters='14763' average='4.93'/>
<georss:where>
<gml:Point>
<gml:pos>21.37124437061831 -157.87353515625</gml:pos>
</gml:Point>
</georss:where>
<gd:comments>
<gd:feedLink href='http://gdata.youtube.com/feeds/api/videos/ZTUVgYoeN_b/comments'
countHint='9416'/>
</gd:comments>
</entry>
答案 0 :(得分:1)
你对类别标签是正确的......做了一些奇怪的事情,我注意到这一点,当我复制并粘贴google的youtube xml代码时注册为文本,因为它在<pre style="word-wrap: break-word; white-space: pre-wrap;">[XML HERE]</pre>
内部进入XML解析器;它也很难阅读类别标签,这些标签似乎是不正确关闭的(即使它们是)。我有一种感觉,要修复xml,正斜杠和大于符号之间的空格是必要的,即
<category scheme='[scheme_url]' term='[term_name]' />
而不是他们拥有的东西:
<category scheme='[scheme_url]' term='[term_name]'/>
但我想这并不能帮助您解决问题,除非您愿意先修复XML。但是,我已经使用jQuery成功解析相同的feed。它可能是您的初始$.get
代码,如果您还没有使用$.getJSON
,请尝试使用{如果您仍需要帮助,请查看代码的其余部分。
否则,这是我一直在使用的,它确实有效(据我所知)。我在一个网站而不是Adobe AIR中使用它,但如果你在AIR中使用jQuery,jQuery就是jQuery,它应该无关紧要(这是关于jQuery,imho的最好的部分)。这是我的代码:
$.getJSON("http://gdata.youtube.com/feeds/api/users/[insert_userName_here]/uploads?orderby=published&start-index=1&max-results=50&v=2&alt=json-in-script&callback=?",
function(json){
$.each(json.feed.entry,function(j,entry) {
//Note: I wouldn't use an alert if you're reading from a big feed, as max-results is set to 50...
alert(entry.title.$t);
});
});
上面的代码会读取包含所有上传视频的任何一个用户的Feed。希望这有帮助!