При работе с bitrix может возникнуть необходимость конвертации массива в xml файл. Из найденных вариантов был выбран лучший инструмент для конвертации php массива в xml файл и xml в php массив: функции array2xml и xml2array.
Для выполнения конвертации из массива в xml файл необходимо:
-
Поместить файл функции array2xml.php в раздел, в котором она будет использоваться.
-
Подключить файл с функцией
require_once ('array2xml.php');
-
Разберем пример по формированию XML на основе заведенных в системе товаров. Для этого будем использовать функцию CIBlockElement::GetList для получения данных из инфоблока.
$array2xml = new Array2xml();
$arSelect = Array("ID", "NAME");
$arFilter = Array("IBLOCK_ID"=> 4, "SECTION_ID" => 2120, "ACTIVE_DATE"=>"Y", "ACTIVE"=>"Y");
$res = CIBlockElement::GetList(Array(), $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
$arResult[SHOPITEM][ITEM_ID] = $arFields[ID];
$arResult[SHOPITEM][PRODUCTNAME] = $arFields[NAME];
echo $array2xml->convert($arResult);
}
-
На выходе получаем сформированный xml наших товаров.
Для выполнения конвертации из xml файла в массив необходимо:
-
Поместить файл функции xml2array.php в раздел, в котором она будет использоваться.
-
Подключить файл с функцией
require_once ('array2xml.php');
-
Загрузить xml файл, который необходимо конвертировать, и указать путь к файлу в файловой системе. Файл xml должен содержать начальный и конечный теги, в которые будет заключен весь документ.
$xml = file_get_contents('test/XML_SHOPITEM2.xml');
$data = xml2array($xml);
print_r($data);
-
В итоге получаем массив элементов, сформированный из xml файла.
Таким образом, мы можем создать xml файл на основе php массива и создать php массив на основе xml.