Документация для разработчиков
Темная тема

XmlWriter

Описание и методы

XmlWriter - класс для экспорта в XML

Метод Описание С версии
construct Метод - конструктор
writeItem Метод записывает один блок в xml файл.
writeFullTag Метод записывает полный тег в файл.
writeEndTag Метод записывает конец тега в файл.
writeBeginTag Метод начинает запись тега в файл.
openFile Метод открывает файл для записи и начинает XML запись.
getErrors Метод возвращает ошибку.
closeFile Метод закрывает открытый файл.

Примеры

$export = new \Bitrix\Main\XmlWriter(array(
	'file' => '<относительный путь, куда пишем>',
	'create_file' => true,
	'charset' => SITE_CHARSET,
	'lowercase' => true //приводить ли все теги к нижнему регистру (для педантов)
));

//открываем файл
$export->openFile();

//обрамляем массив тегом
$export->writeBeginTag('items');

//получаем в выборке элемент - заметьте, вложенность поддерживается
$test = array(
	'name' => 'Tra & tata',
	'Timе' => time(),
	'array' => array(
		'one' => 1,
		'two' => 2,
		'subarray' => array(
			't1' => 1,
			't2' => 2
			)
		)
);

//пишем тег (элемент выше)
$export->writeItem($test, 'item');

//вторым параметром мы передаем обрамляющий тег для этого массива, это то же самое, что и 
$export->writeItem(array('item' =>  $test));

//словили ли ошибки
//$export->getErrors()

//закрываем массив тегом
$export->writeEndTag('items');

//закрываем файл
$export->closeFile();

Удобство класса в возможности пошаговой записи в файл. Например, у вас идет экспорт и вы пишите большой массив данных из базы в файл. Вот переписанный пример выше для реализации пошагового алгоритма (отличия помечены (***)).

$export =  new \Bitrix\Main\XmlWriter(array(
	'file' => '<относительный путь, куда пишем>',
	'create_file' => $step == 0,//создаем файл только на первом шаге (***)
	'charset' => SITE_CHARSET,
	'lowercase' => true //приводить ли все теги к нижнему регистру
));

//открываем файл
$export->openFile();

//обрамляем массив тегом (***)
if ($step == 0)
{
	$export->writeBeginTag('items');
}

//пишем тег (элемент выше) (***) - вот сюда мы возвращаем раз за разом на каждом хите мастера
$export->writeItem($test, 'item');

//закрываем массив тегом (***)
if ($step == 0)
{
	$export->writeEndTag('items');
}

//закрываем файл
$export->closeFile();


© «Битрикс», 2001-2024, «1С-Битрикс», 2024