Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.07.2012, 04:53
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

Нужна помощь - Парсинг XML
Есть сайт предоставляющий информацию о курсах валют в формате XML (nbrb.by/statistics/Rates/XML/)
Но в ссылке которую нужно парсить вместо *.xml написано *.aspx (nbrb.by/Services/XmlExRates.aspx?ondate=01/31/2011)
Если сохранить файл в формате XML и парсить локально то все ок, а по ссылке никак.
Должно быть решение совсем простое, но это мой первый опыт с парсингом XML. Прошу помощи.

Использую следующий код:
$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "XmlExRates.xml",
        dataType: "xml",
        success: xmlParser
    });
});

function xmlParser(xml) {
    $(xml).find("Currency").each(function () {...});
}

Последний раз редактировалось spo, 20.07.2012 в 04:59.
Ответить с цитированием
  #2 (permalink)  
Старый 20.07.2012, 05:13
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

"XmlExRates.xml" это у меня осталось от теста на локалке.

Если ответ приходит в нужном виде, то почему может не парситься?

То есть, когда пишу url: со ссылкой приведенной выше - не работает. Но если перейти по ссылке и сохранить страницу в xml, а затем в url: прописать вместо ссылки путь к сохраненному файлу, то все прекрасно работает.

Последний раз редактировалось spo, 20.07.2012 в 05:17.
Ответить с цитированием
  #3 (permalink)  
Старый 20.07.2012, 11:13
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Есть такое решение => http://james.padolsey.com/javascript...s-with-jquery/

Последний раз редактировалось Deff, 20.07.2012 в 11:15.
Ответить с цитированием
  #4 (permalink)  
Старый 20.07.2012, 23:11
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

А может ли у меня не работать потому что я запускаю статический файл html со скриптом на локалке, а не на сервере?
Ответить с цитированием
  #5 (permalink)  
Старый 20.07.2012, 23:31
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

рабочий код для данной ссылки => http://nbrb.by/Services/XmlExRates.a...ate=01/31/2011

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>ТЕСТ</title>
</head>

<body>

<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>

<script type="text/javascript" src="http://hostjs-mybb2011.narod.ru/js/jQuery.ajax.js"></script>

ЖДИТЕ!
<script>
test('GET', function(){
    
    expect(1);
    stop();
    
    jQuery.get('http://nbrb.by/Services/XmlExRates.aspx?ondate=01/31/2011', function(res){alert(res.responseText)
        ok(

           !!(res && res.responseText),
            'GET Request to Google.com succeeded!'
        );
        start();
    });
    
});
</script>

</body>
</html>

Последний раз редактировалось Deff, 20.07.2012 в 23:45.
Ответить с цитированием
  #6 (permalink)  
Старый 21.07.2012, 00:52
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

Большое спасибо - задача решена.
Хотел уточнить пару непонятных моментов. Вы давали ссылку на решение, там все было понятно, но последний код на JS и я не совсем понимаю его работу.

К примеру:
test() - понятно когда он работает с regExp, но тут он один и еще мне не удалось найти какую роль выполняет второй атрибут - функция
expect() и ok() - это видимо функции jQuery.ajax.js
alert(res.responseText) не содержит в конце точки с запятой это ошибка?
Ответить с цитированием
  #7 (permalink)  
Старый 21.07.2012, 00:54
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от spo
alert(res.responseText) не содержит в конце точки с запятой это ошибка?
поставьте - (*точки с запятой Важны, ежели планируется последущее ужатии кода
или за оператором в этой же строке - стоит следущий;
Ответить с цитированием
  #8 (permalink)  
Старый 21.07.2012, 01:25
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>ТЕСТ</title>
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript" src="http://hostjs-mybb2011.narod.ru/js/jQuery.ajax.js"></script>
<style>
body {
 margin-top:23px;
}
#OutDiv {
 width:540px;
 margin:0 auto;
 padding:1em;
    border-radius:15px;
    -webkit-border-radius:15px;
    -khtml-border-radius:15px;
    -moz-border-radius:15px;
    -o-border-radius:15px;
    -ms-border-radius:5px;

    box-shadow: 0px 5px 18px #000;
    -webkit-box-shadow:0px 5px 18px #000;
    -khtml-box-shadow:0px 5px 18px #000;
    -moz-box-shadow:0px 5px 18px #000;
    -ms-box-shadow:0px 5px 18px #000;
}
</style>
</head>

<body>
ЖДИТЕ!<br /><br />
<div id=Storag></div>

<div id=OutDiv></div>


<script>
    jQuery.get('http://nbrb.by/Services/XmlExRates.aspx?ondate=01/31/2011', function(res){
     var a=$('#Storag').remove();a.append(res.responseText)
     var b=a.find('p').html();$("#OutDiv").append(b);//alert(b);
    });
    
</script>

</body>
</html>

Последний раз редактировалось Deff, 21.07.2012 в 14:08.
Ответить с цитированием
  #9 (permalink)  
Старый 21.07.2012, 18:40
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

Класс! Спасибо еще раз.
Правда остался 1 момент непонятный
Почему a.append(res.responseText) и a.find('p').html() если мы до этого удалили var a=$('#Storag').remove();
Ответить с цитированием
  #10 (permalink)  
Старый 21.07.2012, 18:54
Аватар для spo
spo spo вне форума
Профессор
Отправить личное сообщение для spo Посмотреть профиль Найти все сообщения от spo
 
Регистрация: 11.05.2011
Сообщений: 213

Вот так тоже работает:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript" src="http://hostjs-mybb2011.narod.ru/js/jQuery.ajax.js"></script>
<script type="text/javascript">
    $.get('http://nbrb.by/Services/XmlExRates.aspx?ondate=01/31/2011', function(res){
		$("#outdiv").append(res.responseText);
    });
</script>
<style type="text/css">
	body {margin:50px;}

	#outdiv {
		width: 500px;
		margin: 0 auto;
		padding: 10px;
		border: 1px solid #E9E9E9;
	}
</style>
</head>
<body>

<div id="outdiv"></div>

</body>
</html>
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг XML в IE eternal AJAX и COMET 1 20.11.2011 01:25
Нужна помощь, если можно Fox-WNT Общие вопросы Javascript 3 27.07.2010 11:38
Очень нужна помощь с Ext JS dcbal ExtJS 1 09.07.2010 13:15
нужна помощь Sergiy Серверные языки и технологии 2 31.03.2010 20:16
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17