Преобразование XML в массив или объект
Для преобразования XML в массив или объект можно использовать следующую функцию:
print_r(xml_decode('<?xml version="1.0" encoding="windows-1251" standalone="yes"?>
<order_response>
<id>1043690</id>
<ticket>kYQGKxcj000001043690OCrjirAQCIpmPKfmpKzV</ticket>
<ok_code>wadlacURJa</ok_code>
<failure_code>flxrqhVvdm</failure_code>
<response_code>0</response_code>
<response_message>Успешное выполнение запроса</response_message>
</order_response>'));
function xml_decode($xml){
$dom = new DOMDocument('1.0', 'utf-8');
@$dom->loadXML($xml);
if(!$dom)die('Файл XML испорчен!');
$root=$dom->documentElement;
$nodelist=$root->childNodes; //список узлов 1-го уровня
$res=[];
foreach ($nodelist as $child) {
if ($child->nodeType==XML_ELEMENT_NODE){
$res[$child->nodeName]=$child->nodeValue;
foreach ($child->childNodes as $child2)
if ($child2->nodeType==XML_ELEMENT_NODE){
$res[$child2->nodeName]=$child2->nodeValue;
}
}
}
return (object)$res; // этот вариант вернет в виде объекта
//return $res; // этот вариант вернет в виде массива
}
.
Прокомментировать/Отблагодарить