Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.10.2012, 00:03
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 12.04.2012
Сообщений: 49

Разбор сложных 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')); // НЕ РАБОТАЕТ
});

Первый раз сталкиваюсь с тегами и атрибутами содержащими ":".

Последний раз редактировалось NikolasGrad, 02.11.2012 в 02:50.
Ответить с цитированием
  #2 (permalink)  
Старый 28.10.2012, 00:21
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

двоеточее играет в 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>
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 28.10.2012 в 03:19.
Ответить с цитированием
  #3 (permalink)  
Старый 30.10.2012, 02:19
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 12.04.2012
Сообщений: 49

Спасибо, префикс\\:тег ("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");
  }
});

Последний раз редактировалось NikolasGrad, 30.10.2012 в 03:53.
Ответить с цитированием
  #4 (permalink)  
Старый 02.11.2012, 02:47
Аватар для NikolasGrad
Аспирант
Отправить личное сообщение для NikolasGrad Посмотреть профиль Найти все сообщения от NikolasGrad
 
Регистрация: 12.04.2012
Сообщений: 49

Радость была преждевременной. Работает только в FF.
Ни Google, ни Opera, ни Safari, ни Yandex, ни тем более IE не распознают такой код.
Запросил у "YouTube Data API" JSON (по умолчанию XML), и всё наладилось.
JSON приходит вполне адекватный, да и работать с ним удобнее.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с XML локально, кроссбраузерно... Как бы вы это делали? oyaebunterkrah Общие вопросы Javascript 22 10.06.2012 02:58
jquery распарсить xml выдрать html и вставить kukrinikson Javascript под браузер 0 30.05.2011 17:15
Поиск элементов по DOM-дереву и работа с XML и XSLT mister_maxim Events/DOM/Window 1 13.03.2011 19:41
Перебор вложенных тегов. werdes jQuery 0 27.07.2010 11:51
Как удалить из памяти весь XML документ? EisBerg Events/DOM/Window 1 03.04.2010 14:45