Чтение xml с использованием jquery или javascript

Мой XML выглядит следующим образом, я могу получить элементы и получить данные из таких узлов, как <title>, <description>, Как получить значения из <media:title> а также <media:credit>, <media:thumbnail>

Вот как я могу получить данные

        var xmlparser = new DOMParser();
        var xmlData = xmlparser.parseFromString(data.text(), "text/xml");
        var items = xmlData.getElementsByTagName('item');
       for(var i = 0; i < items.length; i++){
          var title =  items[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
          var desc = items[i].getElementsByTagName("description")[0].childNodes[0].nodeValue;
        }
<pre xmlns:content="http://purl.org/rss/1.0/modules/content/" 
                   xmlns:dcterms="http://purl.org/dc/terms/" 
                   xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
<Channel>
  <item>
   <title>List of records</title>
   <description>reading xml</description.
   <media:title xmlns:media="http://search.yahoo.com/mrss/">
     SinkorSwim Trailer
   </media:title>
  <title>Sink or Swim - Trailer</title>
  <description>Jon Bowermaster's documentary</description>        
  <media:description xmlns:media="http://search.yahoo.com/mrss/">
    Jon Bowermaster's documentary on a learn-to-swim camp 
  </media:description>
  <media:credit xmlns:media="http://search.yahoo.com/mrss/" role="Director" 
                             scheme="urn:ebu">
  Jon Bowermaster
  </media:credit>
  <media:status xmlns:media="http://search.yahoo.com/mrss/" state="active"/>
  <media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" 
     type="landscape" url="http://snagfilms-video.jpg"/>
  <media:player xmlns:media="http://search.yahoo.com/mrss/" height="323" 
   url="http://embed.snagfilms.com/embed/player?filmId=00000158-b20c-d8f9-
   affd-b32ce8700000" width="500"/>
  </item>
  <item></item>
  <item></item>
</channel>
</pre>

1 ответ

Решение

media в media:title обозначает префикс пространства имен XML. Префикс пространства имен является только ярлыком для пространства имен. Пространство имен должно быть определено где-то в документе с помощью xmlns:media приписывать. Тогда вы можете использовать пространство имен с учетом getElementsByTagNameNS() функция для запроса title элемент:

console.log(xml.getElementsByTagNameNS('xmlns:media="http://search.yahoo.com/mrss/"', 'title'));

Первый параметр, который вы должны передать имя пространства имен, а не префикс.

Другие вопросы по тегам