#php #xml
#php #xml
Вопрос:
Я использую некоторый API, который возвращает список транзакций, выполненных пользователем в формате XML. Вот как это выглядит.
<Response>
<Status>00</Status>
<STMT>
<T0>
<ID>25624</ID>
<DATE>30 JUNE 2014</DATE>
<Amount>1500</Amount>
</T0>
<T1>
<ID>11495</ID>
<DATE>29 JUNE 2014</DATE>
<Amount>1000</Amount>
</T1>
<T2>
----
----
----
</STMT>
<Bal>55</Bal>
</Response>
Теперь, как мы получаем эти значения внутри STMT
тегов? Я пробовал это, но не сработало.
$result=simplexml_load_string($xmlstring);
$i='0';
$tx ='T'.$i;
while ($result->STMT->$tx) {
$result->STMT->$tx->ID;
$tx='T'.strval(intval($i ));
}
Пожалуйста, помогите.
Комментарии:
1. «но не сработало» не квалифицируется как конкретный вопрос. Вам нужно, по крайней мере, более четко указать, что не сработало. Что вы ожидали, что произойдет? Что произошло вместо этого? Вы получаете какие-либо ошибки? и т.д. п. П. (Просто пишу это, потому что ваш код выглядит не так уж далеко, я бы предположил, что это действительно работает)
Ответ №1:
На самом деле это просто. Сделайте что-то вроде этого:
$xml_string = '<Response><Status>00</Status><STMT> <T0> <ID>25624</ID> <DATE>30 JUNE 2014</DATE> <Amount>1500</Amount> </T0> <T1> <ID>11495</ID> <DATE>29 JUNE 2014</DATE> <Amount>1000</Amount> </T1> <T2> <ID>11496</ID> <DATE>28 JUNE 2014</DATE> <Amount>500</Amount> </T2></STMT><Bal>55</Bal></Response>';
$xml = simplexml_load_string($xml_string);
$stmt = $xml->STMT;
$stmt = json_decode(json_encode($stmt), true);
echo '<pre>';
print_r($stmt);
Вывод:
Array
(
[T0] => Array
(
[ID] => 25624
[DATE] => 30 JUNE 2014
[Amount] => 1500
)
[T1] => Array
(
[ID] => 11495
[DATE] => 29 JUNE 2014
[Amount] => 1000
)
[T2] => Array
(
[ID] => 11496
[DATE] => 28 JUNE 2014
[Amount] => 500
)
)
Комментарии:
1. Отличная идея! Большое вам спасибо.
Ответ №2:
Это работает. Вы не повторили результат…
echo $result->STMT->$tx->ID . "n";
Кроме того, $i
следует изменить на $i
.