Нужна помощь - Парсинг 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 () {...});
}
|
"XmlExRates.xml" это у меня осталось от теста на локалке.
Если ответ приходит в нужном виде, то почему может не парситься? То есть, когда пишу url: со ссылкой приведенной выше - не работает. Но если перейти по ссылке и сохранить страницу в xml, а затем в url: прописать вместо ссылки путь к сохраненному файлу, то все прекрасно работает. |
Есть такое решение => http://james.padolsey.com/javascript...s-with-jquery/
|
А может ли у меня не работать потому что я запускаю статический файл html со скриптом на локалке, а не на сервере?
|
рабочий код для данной ссылки => 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>
|
Большое спасибо - задача решена.
Хотел уточнить пару непонятных моментов. Вы давали ссылку на решение, там все было понятно, но последний код на JS и я не совсем понимаю его работу. К примеру: test() - понятно когда он работает с regExp, но тут он один и еще мне не удалось найти какую роль выполняет второй атрибут - функция expect() и ok() - это видимо функции jQuery.ajax.js alert(res.responseText) не содержит в конце точки с запятой это ошибка? |
Цитата:
или за оператором в этой же строке - стоит следущий; |
<!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>
|
Класс! Спасибо еще раз.
Правда остался 1 момент непонятный :) Почему a.append(res.responseText) и a.find('p').html() если мы до этого удалили var a=$('#Storag').remove(); |
Вот так тоже работает:
<!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>
|
| Часовой пояс GMT +3, время: 22:29. |