я не могу найти решение на официальных документах, так вот мой сценарий:PHP: разбор данных из формата XML Cube
Мне нужно, чтобы разобрать данные из этого XML: http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml
Это код я не внедрил до сих пор:
$xml=simplexml_load_file('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml');
foreach($xml->Cube->Cube as $x) {
$arr[date('d-m',strtotime($x['time']))] = array();
foreach($xml->Cube->Cube->Cube as $y) {
$arr[(string)$y['currency']] = (float)$y['rate'];
};
};
Проблема заключается в том, что этот код будет, очевидно, разбирает только первый набор ставка, а мне нужно разобрать каждые ставки, установленные для каждой даты, то мне нужно изменить $xml->Cube->Cube->Cube
с чем-то иначе я не знаю, как объявить! Может быть только синтаксисом вопрос тогда ...
UPDATE
Я почти там:
foreach($xml->Cube->Cube as $x) {
for ($i=0;$i<90;$i++) {
foreach($xml->Cube->Cube[$i]->Cube as $y) {
$arr[date('d-m',strtotime($x['time']))][(string)$y['currency']] = (float)$y['rate'];
}
}
}
Проблема здесь находится на линии № 3: foreach
не будет принимать переменную $i
и он возвращает Invalid argument supplied for foreach()
. Если я использую один индекс istead переменной (например, 0
или 1
), он будет работать. Итак, теперь проблема заключается в том, как динамически увеличивать индекс! :(
, что об использовании XSLT запроса – philipp
@philipp я никогда не использовал этот метод, не могли бы вы сделать практический пример? Я читал здесь [(w3schools.com)] (http://www.w3schools.com/xpath/xpath_syntax.asp), но мне не совсем понятно, как применить его к этому случаю – Mariano
' // Cube/Cube/Cube' или '// Cube [@currency и @rate]' возвращает список всех '' Элементов, которые вы желаете ... Чтобы запустить запрос на простой xml, вы должны посмотреть здесь: http: //php.net/manual/de/simplexmlelement.xpath.php –
philipp