Разбор сложных XML тегов
Получаю с "YouTube Data API" XML с такими тегами:
<media:thumbnail url='http://some_url.com' yt:name='mqdefault'/>Some Text</media:thumbnail>Подскажите, как обратиться к такому тегу? 1) Надо получить text() 2) Надо выбрать из нескольких "media:thumbnail" по значению атрибута "yt:name" $.ajax({ ... dataType: "xml", success: function(request){ var some_text = $(request).find('media:thumbnail').text(); // НЕ РАБОТАЕТ var some_url = $(request).find("media:thumbnail[yt:name='mqdefault']").attr('url')); // НЕ РАБОТАЕТ }); Первый раз сталкиваюсь с тегами и атрибутами содержащими ":". |
двоеточее играет в jquery свою собственную роль
и во время запроса jquery будет воспринимать : как команду к выполнению функции идущей далее А значит двоеточее как часть имени тега использовать едва-ли получиться. Зато можно замутить по другому. префикс\\:тег <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> <script> XML='<media:entry ><media:thumbnail url="http://some_url.com" yt:name="mqdefault">Some Text</media:thumbnail></media:entry>'; $(function(){ alert ( $(XML).find('media\\:thumbnail').eq(0).text() ); }); </script> |
Спасибо, префикс\\:тег ("media\\:thumbnail") работает.
И префикс\:атрибут ("yt\:name") тоже. Сделал так: request = "<media:thumbnail url='http://some_url.com' yt:name='mqdefault'/>Some Text</media:thumbnail>" + "<media:thumbnail url='http://another_url.com' yt:name='default'/>Another Text</media:thumbnail>"; var some_text, some_url, thumbnails = $(request).find("media\\:thumbnail"); $(thumbnails).each(function(){ if($(this).attr("yt\:name") == "mqdefault"){ some_text = $(this).text(); some_url = $(this).attr("url"); } }); |
Радость была преждевременной. Работает только в FF.
Ни Google, ни Opera, ни Safari, ни Yandex, ни тем более IE не распознают такой код. Запросил у "YouTube Data API" JSON (по умолчанию XML), и всё наладилось. JSON приходит вполне адекватный, да и работать с ним удобнее. |
Часовой пояс GMT +3, время: 22:05. |