Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите с xml документом (https://javascript.ru/forum/misc/65883-pomogite-s-xml-dokumentom.html)

Igbal 13.11.2016 00:57

Помогите с xml документом
 
Вот документ, здесь данные всех пользователей
http://cakermaker.ru/api/index/15-1
Необходимо вытащить все города - USER_CITY
Написал скрипт, но он выводит значение только первого пользователя. Как бытЬ?
<span class="author_city"></span>



<script type="text/javascript"> 
var xml = $.ajax({  
type: 'GET',  
url: '/api/index/15-1',  
dataType: 'xml',  
async: false  
}).responseText;   
var userName = $(xml).find('struct:first member:contains("USER_CITY")').find('string').text();  
$('.author_city').html('<a href="$PROFILE_URL$">'+userName+'</a>'); 
</script> 

<style type="text/css"> 
.author_name span {font-size:13px;} 
</style>

Aetae 13.11.2016 01:16

$(xml).find('struct:first member:contains("USER_CITY")').find('string').each( function( i, val ) {
  var userName = $( val ).text();
  
  $('.author_city').append('<a href="$PROFILE_URL$">'+userName+'</a>'); 
})
Наверное так.

Igbal 13.11.2016 01:40

Aetae,
спасибо большое, завтра попробую!
А можно ли сделать так, чтобы выводились все пользователи только с определённым городом?

Aetae 13.11.2016 02:09

Можно всё: что напрограммируете - то и будет.)
Конкретнее не скажу, ибо по ссылке "доступ запрещен", потому примера данных нет. Киньте кусок с парой примеров сюда.

Igbal 13.11.2016 02:21

<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>USER_PROFILE</name>
<value>
<string>/index/8-6</string>
</value>
</member>
<member>
<name>USER_UNETPROFILE</name>
<value>
<string>http://219545579.uid.me/</string>
</value>
</member>
<member>
<name>USER_GROUPNAME</name>
<value>
<string>Пользователи</string>
</value>
</member>
<member>
<name>USER_GROUPID</name>
<value>
<i4>1</i4>
</value>
</member>
<member>
<name>USER_RANKNAME</name>
<value>
<string>Рядовой</string>
</value>
</member>
<member>
<name>USER_REGDATE</name>
<value>
<string>09.11.2016</string>
</value>
</member>
<member>
<name>USER_LASTVISIT</name>
<value>
<string>09.11.2016</string>
</value>
</member>
<member>
<name>USER_BIRTHDAY</name>
<value>
<string>04.12.1994</string>
</value>
</member>
<member>
<name>USER_ICQ</name>
<value>
<string> </string>
</value>
</member>
<member>
<name>USER_AOL</name>
<value>
<string> </string>
</value>
</member>
<member>
<name>USER_MSN</name>
<value>
<string> </string>
</value>
</member>
<member>
<name>USER_YAHOO</name>
<value>
<string> </string>
</value>
</member>
<member>
<name>USER_COUNTRY</name>
<value>
<string>Российская Федерация</string>
</value>
</member>
<member>
<name>USER_STATE</name>
<value>
<string>Удмуртия</string>
</value>
</member>
<member>
<name>USER_CITY</name>
<value>
<string>Игра</string>
</value>
</member>
<member>
<name>USER_GENDER</name>
<value>
<string>Мужчина</string>
</value>
</member>
<member>
<name>USER_POSTSNUM</name>
<value>
<i4>0</i4>
</value>
</member>
<member>
<name>USER_USERNAME</name>
<value>
<string>serega adm</string>
</value>
</member>
<member>
<name>USER_AVATAR</name>
<value>
<string>https://219545579.uid.me/avatar.jpg</string>
</value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>USER_PROFILE</name>
<value>
<string>/index/8-7</string>
</value>
</member>
<member>
<name>USER_UNETPROFILE</name>
<value>
<string>http://28009312.uid.me/</string>
</value>
</member>
<member>
<name>USER_GROUPNAME</name>
<value>
<string>Администраторы</string>
</value>
</member>
<member>
<name>USER_GROUPID</name>
<value>
<i4>4</i4>
</value>
</member>
<member>
<name>USER_RANKNAME</name>
<value>
<string>Рядовой</string>
</value>
</member>
<member>
<name>USER_REGDATE</name>
<value>
<string>10.11.2016</string>
</value>
</member>
<member>
<name>USER_LASTVISIT</name>
<value>
<string>Сегодня</string>
</value>
</member>
<member>
<name>USER_BIRTHDAY</name>
<value>
<string>01.02.1990</string>
</value>
</member>
<member>
<name>USER_ICQ</name>
<value>
<string> </string>
</value>
</member>
<member>
<name>USER_AOL</name>
<value>
<string> </string>
</value>
</member>
<member>
<name>USER_MSN</name>
<value>
<string> </string>
</value>
</member>
<member>
<name>USER_YAHOO</name>
<value>
<string> </string>
</value>
</member>
<member>
<name>USER_COUNTRY</name>
<value>
<string>Российская Федерация</string>
</value>
</member>
<member>
<name>USER_STATE</name>
<value>
<string>Нижегородская область</string>
</value>
</member>
<member>
<name>USER_CITY</name>
<value>
<string>Нижний Новгород</string>
</value>
</member>
<member>
<name>USER_GENDER</name>
<value>
<string>Мужчина</string>
</value>
</member>
<member>
<name>USER_POSTSNUM</name>
<value>
<i4>0</i4>
</value>
</member>
<member>
<name>USER_USERNAME</name>
<value>
<string>Igor Mamedov</string>
</value>
</member>
<member>
<name>USER_AVATAR</name>
<value>
<string/>
</value>
</member>
</struct>
</value>
<value>
<struct>

Aetae 13.11.2016 02:50

Правка к первой задаче:
$(xml).find('struct member:contains("USER_CITY") string').each( function( i, val ) {
  var city = $( val ).text();
  $('.author_city').append('<a href="$PROFILE_URL$">' + city + '</a>');
})
Вторая задача:
var city = 'Нижний Новгород'; //поиск города
$(xml).find('struct member:contains("USER_CITY") string:contains("' + city + '")').each( function( i, val ) {
  var $val = $( val );
  if( city != $.trim( $val.text() ) ) return;
  
  var struct = $val.closest('struct');
  var userName = struct.find('member:contains("USER_USERNAME") string').text();
  $('.author_city').append(userName);
})

Igbal 13.11.2016 10:45

Aetae,
Спасибо большое !


Часовой пояс GMT +3, время: 00:17.