使用Jquery访问XML中的名称空间变量

时间:2012-03-12 17:52:34

标签: jquery xml json namespaces youtube-api

我有以下XML:

<?xml version='1.0' encoding='UTF-8' ?>
<feed xmlns='http://www.w3.org/2005/Atom' xmlns:media='http://search.yahoo.com/mrss/'
xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gd='http://schemas.google.com/g/2005'
xmlns:yt='http://gdata.youtube.com/schemas/2007'>
    <id>http://gdata.youtube.com/feeds/api/users/djwezleyj/uploads</id>
    <updated>2012-03-12T16:22:02.672Z</updated>
    <category scheme='http://schemas.google.com/g/2005#kind'
    term='http://gdata.youtube.com/schemas/2007#video' />
    <title type='text'>Uploads by djwezleyj</title>
    <logo>http://www.youtube.com/img/pic_youtubelogo_123x63.gif</logo>
    <link rel='related'
    type='application/atom+xml' href='https://gdata.youtube.com/feeds/api/users/djwezleyj'
    />
    <link rel='alternate' type='text/html' href='https://www.youtube.com/user/djwezleyj/videos'
    />
    <link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml'
    href='https://gdata.youtube.com/feeds/api/users/djwezleyj/uploads' />
    <link rel='http://schemas.google.com/g/2005#batch' type='application/atom+xml'
    href='https://gdata.youtube.com/feeds/api/users/djwezleyj/uploads/batch'
    />
    <link rel='self' type='application/atom+xml' href='https://gdata.youtube.com/feeds/api/users/djwezleyj/uploads?start-index=1&amp;max-results=25'
    />
    <author>
        <name>djwezleyj</name>
        <uri>https://gdata.youtube.com/feeds/api/users/djwezleyj</uri>
    </author>
    <generator version='2.1' uri='http://gdata.youtube.com'>YouTube data API</generator>
    <openSearch:totalResults>2</openSearch:totalResults>
    <openSearch:startIndex>1</openSearch:startIndex>
    <openSearch:itemsPerPage>25</openSearch:itemsPerPage>
    <entry>
        <id>http://gdata.youtube.com/feeds/api/videos/mr_2Qob4egs</id>
        <published>2010-11-29T08:40:45.000Z</published>
        <updated>2010-11-29T08:42:38.000Z</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/categories.cat'
        term='Entertainment' label='Entertainment' />
        <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat'
        term='Ferry15' />
        <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat'
        term='plusbanners' />
        <title type='text'>Black Hole Tour South Africa.mp4</title>
        <content type='text' />
        <link rel='alternate' type='text/html' href='https://www.youtube.com/watch?v=mr_2Qob4egs&amp;feature=youtube_gdata'
        />
        <link rel='http://gdata.youtube.com/schemas/2007#video.responses' type='application/atom+xml'
        href='https://gdata.youtube.com/feeds/api/videos/mr_2Qob4egs/responses'
        />
        <link rel='http://gdata.youtube.com/schemas/2007#video.related' type='application/atom+xml'
        href='https://gdata.youtube.com/feeds/api/videos/mr_2Qob4egs/related' />
        <link rel='http://gdata.youtube.com/schemas/2007#mobile' type='text/html'
        href='https://m.youtube.com/details?v=mr_2Qob4egs' />
        <link rel='self' type='application/atom+xml' href='https://gdata.youtube.com/feeds/api/users/djwezleyj/uploads/mr_2Qob4egs'
        />
        <author>
            <name>DJWezleyJ</name>
            <uri>https://gdata.youtube.com/feeds/api/users/DJWezleyJ</uri>
        </author>
        <gd:comments>
            <gd:feedLink rel='http://gdata.youtube.com/schemas/2007#comments' href='https://gdata.youtube.com/feeds/api/videos/mr_2Qob4egs/comments'
            countHint='0' /></gd:comments>
        <media:group>
            <media:category label='Entertainment' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Entertainment</media:category>
            <media:content url='https://www.youtube.com/v/mr_2Qob4egs?version=3&amp;f=user_uploads&amp;app=youtube_gdata'
            type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full'
            duration='16' yt:format='5' />
            <media:content url='rtsp://v7.cache8.c.youtube.com/CigLENy73wIaHwkLeviGQva_mhMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp'
            type='video/3gpp' medium='video' expression='full' duration='16' yt:format='1'
            />
            <media:content url='rtsp://v4.cache8.c.youtube.com/CigLENy73wIaHwkLeviGQva_mhMYESARFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp'
            type='video/3gpp' medium='video' expression='full' duration='16' yt:format='6'
            />
            <media:description type='plain' />
            <media:keywords>Ferry15, plusbanners</media:keywords>
            <media:player url='https://www.youtube.com/watch?v=mr_2Qob4egs&amp;feature=youtube_gdata_player'
            />
            <media:thumbnail url='http://i.ytimg.com/vi/mr_2Qob4egs/0.jpg' height='360'
            width='480' time='00:00:08' />
            <media:thumbnail url='http://i.ytimg.com/vi/mr_2Qob4egs/1.jpg' height='90'
            width='120' time='00:00:04' />
            <media:thumbnail url='http://i.ytimg.com/vi/mr_2Qob4egs/2.jpg' height='90'
            width='120' time='00:00:08' />
            <media:thumbnail url='http://i.ytimg.com/vi/mr_2Qob4egs/3.jpg' height='90'
            width='120' time='00:00:12' />
            <media:title type='plain'>Black Hole Tour South Africa.mp4</media:title>
            <yt:duration seconds='16'
            />
        </media:group>
        <yt:statistics favoriteCount='0' viewCount='169' />
    </entry>
    <entry>
        <id>http://gdata.youtube.com/feeds/api/videos/Nk6JOCqzK18</id>
        <published>2009-01-16T08:20:24.000Z</published>
        <updated>2010-07-24T02:58:53.000Z</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/categories.cat'
        term='Entertainment' label='Entertainment' />
        <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat'
        term='54827575663' />
        <category scheme='http://gdata.youtube.com/schemas/2007/keywords.cat'
        term='30710' />
        <title type='text'>The Renegade DJs at Club Traxx - 12 December 2008</title>
        <content type='text'>http://www.facebook.com/group.php?gid=6763068443&amp;ref=ts For more info
            on the Renegades</content>
        <link rel='alternate' type='text/html' href='https://www.youtube.com/watch?v=Nk6JOCqzK18&amp;feature=youtube_gdata'
        />
        <link rel='http://gdata.youtube.com/schemas/2007#video.responses' type='application/atom+xml'
        href='https://gdata.youtube.com/feeds/api/videos/Nk6JOCqzK18/responses'
        />
        <link rel='http://gdata.youtube.com/schemas/2007#video.related' type='application/atom+xml'
        href='https://gdata.youtube.com/feeds/api/videos/Nk6JOCqzK18/related' />
        <link rel='self' type='application/atom+xml' href='https://gdata.youtube.com/feeds/api/users/djwezleyj/uploads/Nk6JOCqzK18'
        />
        <author>
            <name>DJWezleyJ</name>
            <uri>https://gdata.youtube.com/feeds/api/users/DJWezleyJ</uri>
        </author>
        <gd:comments>
            <gd:feedLink rel='http://gdata.youtube.com/schemas/2007#comments' href='https://gdata.youtube.com/feeds/api/videos/Nk6JOCqzK18/comments'
            countHint='0' /></gd:comments>
        <media:group>
            <media:category label='Entertainment' scheme='http://gdata.youtube.com/schemas/2007/categories.cat'>Entertainment</media:category>
            <media:content url='https://www.youtube.com/v/Nk6JOCqzK18?version=3&amp;f=user_uploads&amp;app=youtube_gdata'
            type='application/x-shockwave-flash' medium='video' isDefault='true' expression='full'
            duration='113' yt:format='5' />
            <media:content url='rtsp://v5.cache3.c.youtube.com/CigLENy73wIaHwlfK7MqOIlONhMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp'
            type='video/3gpp' medium='video' expression='full' duration='113' yt:format='1'
            />
            <media:content url='rtsp://v2.cache7.c.youtube.com/CigLENy73wIaHwlfK7MqOIlONhMYESARFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp'
            type='video/3gpp' medium='video' expression='full' duration='113' yt:format='6'
            />
            <media:description type='plain'>http://www.facebook.com/group.php?gid=6763068443&amp;ref=ts For more info
                on the Renegades</media:description>
            <media:keywords>54827575663, 30710</media:keywords>
            <media:player url='https://www.youtube.com/watch?v=Nk6JOCqzK18&amp;feature=youtube_gdata_player'
            />
            <media:thumbnail url='http://i.ytimg.com/vi/Nk6JOCqzK18/0.jpg' height='360'
            width='480' time='00:00:56.500' />
            <media:thumbnail url='http://i.ytimg.com/vi/Nk6JOCqzK18/1.jpg' height='90'
            width='120' time='00:00:28.250' />
            <media:thumbnail url='http://i.ytimg.com/vi/Nk6JOCqzK18/2.jpg' height='90'
            width='120' time='00:00:56.500' />
            <media:thumbnail url='http://i.ytimg.com/vi/Nk6JOCqzK18/3.jpg' height='90'
            width='120' time='00:01:24.750' />
            <media:title type='plain'>The Renegade DJs at Club Traxx - 12 December 2008</media:title>
            <yt:duration
            seconds='113' />
        </media:group>
        <gd:rating average='5.0' max='5' min='1' numRaters='1' rel='http://schemas.google.com/g/2005#overall'
        />
        <yt:statistics favoriteCount='0' viewCount='106' />
    </entry>
</feed>

我无法访问以下变量(在每个“Entry”实例中)

  • 含量
  • 媒体:群组----&gt;媒体:描述

我用来从You Tube API返回JSON对象的代码是:

<script type="text/javascript">
var playListURL = 'https://gdata.youtube.com/feeds/api/users/djwezleyj/uploads?v=2&alt=json&callback=?';
var videoURL= 'http://www.youtube.com/watch?v=';
$.getJSON(playListURL, function(data) {
    var list_data="";
    $.each(data.feed.entry, function(i, item) {
        var feedTitle = item.title.$t;
        var content = item.content.$t;
        var feedURL = item.link[1].href;
        var fragments = feedURL.split("/");
        var videoID = fragments[fragments.length - 2];
        var url = videoURL + videoID;
        var thumb = "http://img.youtube.com/vi/"+ videoID +"/default.jpg";
        list_data += '<li><a href="'+ url +'" title="'+ feedTitle +'"><img alt="'+ feedTitle+'" src="'+ thumb +'"/></a><div>'+ feedTitle + '<br>' + content + '</div></li>';
    });
    $(list_data).appendTo(".cont");
});
</script>

内容变量返回为“未定义”

或者,我没有在媒体:组命名空间

中访问名称空间变量。

关于如何解决这个问题的任何想法?

提前致谢

1 个答案:

答案 0 :(得分:0)

第一个条目内容为空。媒体:由data.feed.entry.media $ group访问的组。使用FireBug或开发人员工具检查YouTube响应(JSON而不是XML)。