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

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();


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Александр Киселев
Сообщение не промодерировано, возможны ошибки и неточности.
Код
class generateXml{
   private $xml, $data;

   public function index(){
      self::getData();

      $this->xml = new \Bitrix\Main\XmlWriter(['create_file' => true, 'charset' => 'UTF-8', 'file' => '/xml-data.xml']);
      $this->xml->openFile();
      $this->xml->writeBeginTag('shop');
      $this->xml->writeBeginTag('items');

      foreach ($this->data as $item) {
         $this->xml->writeItem($item, 'item');
      }

      $this->xml->writeBeginTag('items');
      $this->xml->writeEndTag('shop');
      $this->xml->closeFile();

   }

   private function getData(){
      $this->data = [
         0 => [
            'id' => 512,
            'name' => 'Футболка',
            'price' => 145,
            'code' => 'tshirt'
         ],
         1 => [
            'id' => 513,
            'name' => 'Футболка Синяя',
            'price' => 135,
            'code' => 'red-tshirt1'
         ],
         2 => [
            'id' => 514,
            'name' => 'Футболка Красная',
            'price' => 125,
            'code' => 'red-tshirt2'
         ]
      ];
   }
}

0
Низамиддин Нажмиддинов
0
Хамиджон Имомов
Класс XMLWriter для экспорта данных в XML файл в 1С-Битрикс.
https://smartraf.ru/allarticles/razrabotka/klass-xmlwriter-dlya-eksporta-dannykh-v-xml-fayl-v-1s-bitriks/
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх