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

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 \' "',
   'TimE' => time(),
   'bbbb' => '',
   '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-2020, «1С-Битрикс», 2020
Наверх