[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите спарсить XML файл
rogodessa
Здравствуйте, господа знатоки.

Прошу помочь новичку в парсинге xml файла... php познаю методом тыка и поика гугла. С прасингом html разорался без проблем... а вот XML файлы, что-то вообще не поддаются... еще и файл выбрал не совсем, на мой взгляд, простенький.

Вот сам файл _https://wm.exchanger.ru/asp/XMLWMList.asp?exchtype=7

надо вытащить все значения из первого <query>. помогите, хотя бы, один параметр достать, например, outinrate. А то я даже стартануть не могу... уже немерено информации перечитал по DOM и SimpleXML, но что-то вообще "0"... либо ошибки либо чистый экран... множество примеров под свои нужды пытался подстроить, но и тут ничего... Я даже не могу понять как в такой структуре XML файла расценивать <query> - как тег, или как атрибут, или еще что-то.

Заранее признателен за любую оказанную помощь!



Спустя 7 минут, 58 секунд (15.01.2012 - 00:49) redreem написал(а):
делай парсинг на стороне клиента - XML будет входить в DOM с тривиальным доставанием всех нужных значений, а разобор уже отправляй на сервер.

Спустя 5 минут, 40 секунд (15.01.2012 - 00:54) rogodessa написал(а):
redreem, звените, но мне это мало о чем говорит smile.gif Может если есть возможность, ткните где можно посмотреть какие-то нормальные примеры на эту тему.

Спустя 1 минута, 10 секунд (15.01.2012 - 00:55) redreem написал(а):
гугл по запросам:
"вставить XML на страницу"
"доступ к XML из javascript"

Спустя 8 минут, 25 секунд (15.01.2012 - 01:04) rogodessa написал(а):
я уже там smile.gif

Спустя 1 час, 15 минут, 30 секунд (15.01.2012 - 02:19) rogodessa написал(а):
redreem, раз уж не спите, может подскажите...

делаю так

файл index.html

<html>
<head>
<script
language="JavaScript">

var
source;
var style;

function init() {
source = new ActiveXObject("Microsoft.XMLDOM");
source.async = false;
style = new ActiveXObject("Microsoft.XMLDOM");
style.async = false;
source.load("data.xml"); это копия файла, который надо спарсить
style.load("style.xsl");
document.all.item("xslresult").innerHTML = source.transformNode(style);
return true;
}

</script>
</head>
<body
onLoad="init()">
<div
id="xslresult">
<!-- Здесь должен быть текст -->
</div>
</body>
</html>


Копия XML файла в виде data.xml сделана, т.к., если я правильно понимаю, то источник данных должен находиться на том же сервере, что и обработчик... правильно?

файл style.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template
match="/">
<xsl:value-of
select="//WMExchnagerQuerys/query/@id"/>
<xsl:value-of
select="//WMExchnagerQuerys/query/@amountin"/>
<xsl:value-of
select="//WMExchnagerQuerys/query/@amountout"/>
<xsl:value-of
select="//WMExchnagerQuerys/query/@inoutrate"/>
</xsl:template>
</xsl:stylesheet>

при загрузке index.html чистая страница...
Что делаю не так?

Спустя 3 минуты, 53 секунды (15.01.2012 - 02:23) rogodessa написал(а):
пока писал, меня осенил еще один вопрос:
JavaScript обрабатывается, если я не ошибаюсь, в самом браузере... а как же потом все это добро в БД записать?

Спустя 12 часов, 10 минут, 29 секунд (15.01.2012 - 14:34) redreem написал(а):
я ж писал:

Цитата
..., а разобор уже отправляй на сервер


в том в виде, который тебе удобен. да хоть json хотябы.

Спустя 21 минута, 59 секунд (15.01.2012 - 14:56) killer8080 написал(а):
$t = file_get_contents('https://wm.exchanger.ru/asp/XMLWMList.asp?exchtype=7');
preg_match('#<query[^>]+>#isU', $t, $m);
preg_match_all('#([a-z]+)="([^"]+)"#isU', $m[0], $m);
$xml = array_combine($m[1], $m[2]);
echo '<pre>'.print_r($xml, 1).'</pre>';

Спустя 3 часа, 25 минут, 53 секунды (15.01.2012 - 18:22) rogodessa написал(а):
killer8080, спасибо вам.
нужный результат при минимуме действий...
я, правда, уже нашел решение у автора данной статьи _http://webi.ru/webi_articles/big_xml.html
Но ваш вариант, конечно, значительно проще smile.gif
Я вам что-то должен? smile.gif

Спустя 2 минуты, 34 секунды (15.01.2012 - 18:24) killer8080 написал(а):
Цитата (rogodessa @ 15.01.2012 - 17:22)
Я вам что-то должен?

Ага 10 000 000$ и плюсик в карму laugh.gif

Спустя 2 минуты, 59 секунд (15.01.2012 - 18:27) Winston написал(а):
killer8080
У тебя file_get_contents без проблем работает с https? smile.gif

Спустя 55 секунд (15.01.2012 - 18:28) killer8080 написал(а):
Winston
тестил на Денвере - без проблем smile.gif

Спустя 29 минут, 57 секунд (15.01.2012 - 18:58) Winston написал(а):
Цитата (killer8080 @ 15.01.2012 - 17:28)
тестил на Денвере - без проблем

Хм.. без openssl у меня не запахало.
А по тебе, все гораздо проще
$xml = simplexml_load_file('https://wm.exchanger.ru/asp/XMLWMList.asp?exchtype=7');
foreach($xml->WMExchnagerQuerys->query as $key => $val)
echo 'id ' . $val->attributes()->id . ' outinrate ' . $val->attributes()->outinrate . '<br/>';

Спустя 34 минуты, 18 секунд (15.01.2012 - 19:32) killer8080 написал(а):
Цитата (Winston @ 15.01.2012 - 17:58)
Хм.. без openssl у меня не запахало.

Да, я посмотрел у меня оно подключено.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.