Разбор сложных 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, время: 08:08. |