Jquery не удалось разобрать XML - PullRequest
0 голосов
/ 23 июля 2010

Я занимаюсь разбором видео с YouTube в приложении AIR. Использование jquery для его анализа.

    $(feed).find("entry").each(function()
    {
      var tit = $(this).find('title');
      alert(tit.text());
    }

Похоже, что после синтаксического анализа category (тег категории закрывается другим способом) он не может выполнить синтаксический анализ остальной части документа. Приведенный выше код успешно предупреждает текст до тега updated. Что может быть решением.

 <entry gd:etag='W/&quot;C0AMRn47eCp7ImA9WxRQGUw.&quot;'>
        <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>

1 Ответ

1 голос
/ 19 мая 2011

Вы правы насчет тега категории ... что-то странное было сделано, я заметил это, когда скопировал и вставил xml-код google youtube, который зарегистрирован как текст, поскольку он находится внутри <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 для успешного анализа одних и тех же каналов.Это может быть ваш исходный код $.get, попробуйте использовать $.getJSON, если вы этого еще не сделали ... позвольте мне увидеть остаток вашего кода, если вам все еще нужна помощь.

В противном случае, вот что я 'Я использую, и это работает (насколько я знаю).Я использую его на веб-сайте, а не в Adobe AIR, но если вы используете jQuery в AIR, то 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);
    });
});

Приведенный выше код читает любой канал пользователя, содержащий все загруженные видео.Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...