@angelzzz

Как получить данные из xml?

Есть xml файл:

<CurrencyRates Name="Daily Exchange Rates" Date="13.01.2016">
<Currency ISOCode="USD">
<Nominal>1</Nominal>
<Value>75,8985</Value>
</Currency>
<Currency ISOCode="EUR">
<Nominal>1</Nominal>
<Value>82,6117</Value>
</Currency>
</CurrencyRates>


получаю данные из него таким кодом

<?php
header('Content-type: text/html; charset=utf-8');
    $xml = simplexml_load_file('xml/daily.xml');
    echo $xml->CurrencyRates[Date];
    foreach ($xml->Currency as $Currency) {
        $number = $Currency->Value;
        echo '<span class="cur-code">'.$Currency[ISOCode].'</span>';
        echo '<span class="cur-val">'.substr("$number", 0, -2).'</span>'; /это потому-что я не смог преобразовать данные в число, решил просто обрезать два последних символа
    }


1. Как получить доступ к атрибуту Date="13.01.2016"?
2. Как преобразовать значение value в число и нормальным способом его выодить с двумя знаками после запятой?
3. как можно реализовать сравнение с предыдущим периодом?

Спасибо!
  • Вопрос задан
  • 1208 просмотров
Решения вопроса 1
@Nc_Soft
<?php
$xml = <<<XML
<CurrencyRates Name="Daily Exchange Rates" Date="13.01.2016">
<Currency ISOCode="USD">
<Nominal>1</Nominal>
<Value>75,8985</Value>
</Currency>
<Currency ISOCode="EUR">
<Nominal>1</Nominal>
<Value>82,6117</Value>
</Currency>
</CurrencyRates>
XML;

$xml = simplexml_load_string($xml);

echo $xml['Date'];
foreach ($xml->Currency as $Currency) {
    $number = $Currency->Value;
    echo '<span class="cur-code">' . $Currency['ISOCode'] . '</span>';
    echo '<span class="cur-val">' . sprintf('%.02f', str_replace(',', '.', $number)) . '</span>';
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@esvlad
Веб-разработчик
Используй SimpleXMLElement::attributes
$xml->Currency->CurrencyRates->attributes('Date');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы