Получение префикса: значение элемента из RSS-канала XML - PullRequest
0 голосов
/ 06 августа 2020

Я пытаюсь разобрать XML, используя JQuery на стороне клиента. Вот фрагмент / образец RSS-канала канала Youtube :

  <published>2020-08-05T19:00:01+00:00</published>
  <updated>2020-08-05T22:20:16+00:00</updated>
  <media:group>
   <media:title>Ethan Gruska &quot;On The Outside&quot; - Late Show #PlayAtHome</media:title>
   <media:content url="https://www.youtube.com/v/8YPCM511lWQ?version=3" type="application/x-shockwave-flash" width="640" height="390"/>
   <media:thumbnail url="https://i1.ytimg.com/vi/8YPCM511lWQ/hqdefault.jpg" width="480" height="360"/>
   <media:description>Singer, songwriter and producer Ethan Gruska treats us to this #PlayAtHome performance of &quot;On The Outside,&quot; from his new album &quot;EN GARDE&quot; which is available now on Warner Records. #EthanGruska #OnTheOutside #PlayAtHome

Я перебираю весь файл, помещая все <item> в item var.

$.each(data.feedItems, function(index, item) {

    console.log('(%s) %s', feedUrl, JSON.stringify(item) + '\n');

(...)
}

Вот результат вышеизложенного, в котором вы можете увидеть значение "description", которое мне нужно:

07:49:58.627 (https://www.youtube.com/feeds/videos.xml?channel_id=UC3I2GFN_F8WudD_2jUZbojA) {"title":"Chicano Batman (Live on KEXP at Home)","description":null,"summary":null,"date":"2020-08-07T01:25:49.000Z","pubdate":"2020-08-06T23:10:23.000Z","pubDate":"2020-08-06T23:10:23.000Z","link":"https://www.youtube.com/watch?v=jZhylCfqc9E","guid":"yt:video:jZhylCfqc9E","author":"KEXP","comments":null,"origlink":null,"image":{"url":"https://i3.ytimg.com/vi/jZhylCfqc9E/hqdefault.jpg"},"source":{},"categories":[],"enclosures":[],"atom:@":{},"atom:id":{"@":{},"#":"yt:video:jZhylCfqc9E"},"yt:videoid":{"@":{},"#":"jZhylCfqc9E"},"yt:channelid":{"@":{},"#":"UC3I2GFN_F8WudD_2jUZbojA"},"atom:title":{"@":{},"#":"Chicano Batman (Live on KEXP at Home)"},"atom:link":{"@":{"rel":"alternate","href":"https://www.youtube.com/watch?v=jZhylCfqc9E"}},"atom:author":{"@":{},"name":{"@":{},"#":"KEXP"},"uri":{"@":{},"#":"https://www.youtube.com/channel/UC3I2GFN_F8WudD_2jUZbojA"}},"atom:published":{"@":{},"#":"2020-08-06T23:10:23+00:00"},"atom:updated":{"@":{},"#":"2020-08-07T01:25:49+00:00"},"media:group":{"@":{},"media:title":{"@":{},"#":"Chicano Batman (Live on KEXP at Home)"},"media:content":{"@":{"url":"https://www.youtube.com/v/jZhylCfqc9E?version=3","type":"application/x-shockwave-flash","width":"640","height":"390"}},"media:thumbnail":{"@":{"url":"https://i3.ytimg.com/vi/jZhylCfqc9E/hqdefault.jpg","width":"480","height":"360"}},"media:description":{"@":{},"#":"LA's Chicano Batman share a set of songs recorded exclusively for KEXP and join Morgan to talk live on Thursday, August 6, at 3pm PT."},"media:community":{"@":{},"media:starrating":{"@":{"count":"418","average":"4.82","min":"1","max":"5"}},"media:statistics":{"@":{"views":"7909"}}}},"meta":{"#ns":[{"xmlns:yt":"http://www.youtube.com/xml/schemas/2015"},{"xmlns:media":"http://search.yahoo.com/mrss/"},{"xmlns":"http://www.w3.org/2005/Atom"}],"@":[{"xmlns:yt":"http://www.youtube.com/xml/schemas/2015"},{"xmlns:media":"http://search.yahoo.com/mrss/"},{"xmlns":"http://www.w3.org/2005/Atom"}],"#xml":{"version":"1.0","encoding":"UTF-8"},"#type":"atom","#version":"1.0","title":"KEXP","description":null,"date":"2006-07-07T16:39:26.000Z","pubdate":"2006-07-07T16:39:26.000Z","pubDate":"2006-07-07T16:39:26.000Z","link":"https://www.youtube.com/channel/UC3I2GFN_F8WudD_2jUZbojA","xmlurl":"http://www.youtube.com/feeds/videos.xml?channel_id=UC3I2GFN_F8WudD_2jUZbojA","xmlUrl":"http://www.youtube.com/feeds/videos.xml?channel_id=UC3I2GFN_F8WudD_2jUZbojA","author":"KEXP","language":null,"favicon":null,"copyright":null,"generator":null,"cloud":{},"image":{},"categories":[],"atom:@":{"xmlns:yt":"http://www.youtube.com/xml/schemas/2015","xmlns:media":"http://search.yahoo.com/mrss/","xmlns":"http://www.w3.org/2005/Atom"},"atom:link":[{"@":{"rel":"self","href":"http://www.youtube.com/feeds/videos.xml?channel_id=UC3I2GFN_F8WudD_2jUZbojA"}},{"@":{"rel":"alternate","href":"https://www.youtube.com/channel/UC3I2GFN_F8WudD_2jUZbojA"}}],"atom:id":{"@":{},"#":"yt:channel:UC3I2GFN_F8WudD_2jUZbojA"},"yt:channelid":{"@":{},"#":"UC3I2GFN_F8WudD_2jUZbojA"},"atom:title":{"@":{},"#":"KEXP"},"atom:author":{"@":{},"name":{"@":{},"#":"KEXP"},"uri":{"@":{},"#":"https://www.youtube.com/channel/UC3I2GFN_F8WudD_2jUZbojA"}},"atom:published":{"@":{},"#":"2006-07-07T16:39:26+00:00"}}}
PTL.feed.js:269:17

Я пытаюсь получить доступ к элементам media:group ; Я могу получить значения верхнего уровня, например item.published, но не item['media:group']['media:description'], поскольку он всегда возвращает [object Object]: |

Какой метод я могу использовать для чтения этого значения?

1 Ответ

1 голос
/ 07 августа 2020

В вашем примере media: description выглядит следующим образом:

"media:description": {
            "@": {},
            "#": "LA's Chicano Batman share a set of songs recorded exclusively for KEXP and join Morgan to talk live on Thursday, August 6, at 3pm PT."
        }

Это объект. (отсюда и ваш результат) Если вам нужен текст, попробуйте

item['media:group']['media:description']['#']
...