JQuery find() не всё находит

362
13 июля 2017, 01:05

$(xml).find() находит все кроме URL картинки.

<?xml version="1.0" encoding="utf-8"?> 
<anime> 
  <entry> 
    <id>2889</id> 
    <title>Bleach - The DiamondDust Rebellion</title> 
    <english>Bleach: Diamond Dust Rebellion</english> 
    <synonyms>Bleach: The Diamond Dust Rebellion - M&Aring; Bleach - The DiamondDust Rebellion - Mou Hitotsu no Hyourinmaru</synonyms> 
    <episodes>1</episodes> 
    <type>Movie</type> 
    <status>Finished Airing</status> 
    <start_date>2007-12-22</start_date> 
    <end_date>2007-12-22</end_date> 
    <synopsis>Some synopsis</synopsis> 
    <image>https://myanimelist.cdn-dena.com/images/anime/6/4052.jpg</image> 
  </entry> 
</anime>

var req = new XMLHttpRequest(); 
req.open('GET', "https://myanimelist.net/api/anime/search.xml?q=" + query, false, LOGIN, PASSWORD); 
req.send(); 
var animeXml = req.responseText; 
$(animeXml).find("entry").each(function() { 
 
  animeEntrys.push(new AnimeEntry($(this).find("id").text(), $(this).find("title").text(), $(this).find("english").text(), $(this).find("synonyms").text(), 
    $(this).find("episodes").text(), $(this).find("type").text(), $(this).find("status").text(), $(this).find("start_date").text(), $(this).find("end_date").text(), 
    $(this).find("synopsis").text(), $(this).find("image").text())); 
  console.log("findImage: ".format($(this).find("image").text())); 
  console.log("findImage: ".format($(this).find("image"))); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Answer 1

$(animeXml) парсит ответ сервера как HTML код, несмотря на его XML структуру. В HTML у тега <image> не может быть содержимого, поэтому ничего и не возвращается.

Для парсинга XML в jQuery есть $.parseXML, который вернёт XML дерево, которое снова можно скормить jQuery, и вот тогда-то код заработает:

var animeXml = req.responseText;
var xmlDoc = $.parseXML(animeXml);
$(xmlDoc).find("entry").each(function() {
...

Однако, есть нюанс: с приведённым XML у меня браузер отказался что-либо делать, ссылаясь на неправильно сформированный XML - без указания места, где же он неправильный. Экспериментальным путём удалось определить, что виноват &Aring;, но почему и как этого избежать - непонятно.

READ ALSO
qtip плагин выезжает за границы

qtip плагин выезжает за границы

На сайте есть иконки, для которых предусмотрен tooltip, тултип показывается рядом с мышью, и содержимое получается справа снизу от мыши, но если...

280
Всплывает окно, но его не видно - jQuery

Всплывает окно, но его не видно - jQuery

Не всплывает окно для заказа, в консоли ошибок не выскакивает, просто выводиться блокВидно по верстке и по инспектору, внутри него все есть,...

294
substr из php в js

substr из php в js

Я хочу обрезать строку по краям, в php это можно сделать очень просто:

249
Почему размывает градиент?

Почему размывает градиент?

Подскажите почему размывает линию градиента? Переход делаю резкий, в браузерах mac os все четко а на винде в хроме размазывает

250