Разбор XML с помощью jQuery ... проблема с извлечением элементов - PullRequest
2 голосов
/ 29 марта 2010

Фрагмент XML:

<results>
   <review>
      <api_detail_url>http://api.giantbomb.com/review/1/</api_detail_url>
      <game>
         <api_detail_url>http://api.giantbomb.com/game/20462/</api_detail_url>
         <id>20462</id>
         <name>SingStar</name>
      </game>
      <score>4</score>
   </review>
</results>

А вот мой тестовый код, просто чтобы показать, собираются ли данные или нет («data» содержит XML):

var element;

$(data).find('review').each(function() {
    element = $(this).find('name').text();
});

alert(element); 

Теперь вот проблема, только этот запрос на самом деле возвращает данные:

$(this).find('score').text();

В этом случае в окне предупреждения появится «4».Эти два других запроса ничего не возвращают (окно предупреждения пусто):

$(this).find('api_detail_url').text();
$(this).find('name').text();

Я пытался использовать селекторы jQuery, например ...

$(this).find('game > name').text();

...но это тоже не сработает, все равно получите пустое окно с предупреждением.Я что-то пропустил?Тестирование выполняется в Chrome.

1 Ответ

0 голосов
/ 30 мая 2011

Попробуйте что-то вроде этого:

при условии, что в xml у вас есть документ xml

$(xml).each(function (index, item) {
    $reviews = $(item).find('review');

    //assuming that you have more than one review in results
    $reviews.each(function (i, rev) {
        var api = $(rev).find('api_detail_url').text();
        var $game = $(rev).find('game');
        var gameApi = $game.find('api_detail_url').text();
        var gameID = $game.find('id').text();
        var gameName = $game.find('name').text();                     

    });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...