Функция генерирующая создание xml-файла из массива данных

Иногда возникает необходимость создать xml-файл из данных, представленных в формате массива. Данная функция помогает быстро решить данную задачу

function createXmlFile($fileName,$rows){
	$resultFile = '/upload/export_xmls/'.$fileName.'.xml';
	$file = new IO\File(Application::getDocumentRoot() . $resultFile);
	$file->putContents('');
	$export = new \Bitrix\Main\XmlWriter([
		'file'        => $resultFile, // относительный путь к создаваемому файлу, файл отсутствует и установлен параметр 'create_file', то он будет автоматически создан
		'create_file' => true, //создавать ли файл, или продолжить запись в уже созданный. В данном случае каждый раз будет создаваться и перезаписываться новый файл
		'charset'     => 'UTF-8', //кодировка файла
		'lowercase'   => false //приводить ли все теги к нижнему регистру
	]);
	$export->openFile();
	$export->writeBeginTag(ucfirst($fileName));
	foreach ($rows as $row){
		$export->writeBeginTag('Item');
		foreach ($row as $col=>$value){
			if(is_array($value)){
				$export->writeBeginTag($col);

				foreach ($value as $v){
					if(is_array($v)){
						$txt = [];
						foreach ($v as $k=>$vt){
							$txt[] = $k.'='.'"'.$vt.'"';
						}
						$export->writeFullTag('value '.implode(' ',$txt),'');
					} else {
						$export->writeFullTag('value v="'.$v.'"','');
					}
				}
				$export->writeEndTag($col);
			} else {
				$export->writeFullTag($col, $value);
			}
		}
		$export->writeEndTag('Item');
	}
	$export->writeEndTag(ucfirst($fileName));
	$export->closeFile();
	echo $resultFile;
}

И небольшой пример передачи нужной информации в такую функцию:

createXmlFile('brands',array_map(function ($item){
	return [
		'slug'=>$item['slug'],
		'name'=>$item['name'],
		'name_en'=>$item['name_en'],
		'logo'=>$item['logo'],
	];
},$arBrands['ITEMS']));
Количество показов: 1
18.09.2022

Возврат к списку

Если вам была полезна статья можете отблагодарить автора:

Разработка сайта

Подайте заявку на разработку сайта на базе готового решения от компании 1С-Битрикс или одного из партнеров компании. Максимально подробно опишите, чему будет посвящен сайт, если это интернет-магазин - что он будет продавать, нужна ли мультиязычность, будут ли разные типы цен (розница, опт, крупный опт), будет ли интеграция с 1С, будет ли выгрузка товаров на различные торговые площадки...

Сопровождение сайта

Вы можете подать заявку на сопровождение вашего сайта на базе 1С-Битрикс. Сопровождение включает в себя: проверка актуальности обновлений сайта, проверка актуальности резервной копии, консультации по сайту. Опишите в заявке, какие еще объемы планируются на сопровождении и на какой срок вы планируете заключить договор на сопровождение - мы подберем подходящий вам бюджет на сопровождение

Работы по сайту

Вы можете подать заявку на выполнение определенного объема работ по сайту. Опишите в заявке объем работ. Это может быть разработка какого-то нового функционала, доработки по имеющемуся функционалу, доработки под требования сео-специалистов. На основании заявки вам будет сформирован бюджет работ, а также названы сроки на выполнение тех или иных работ.