Импорт новостей из файла .xml
Для удобной работы его нужно структурировать.

Например:

<xml version="1.0" encoding="UTF-8">
<Каталог>
 <Новости> 
   <Новость>
     <Дата> 27 января 2017 </Дата>
     <Название> Акция «Переходите на зарплатный проект от «D Bank» и  получите карточку VISA Platinum в подарок» </Название>
     <Описание> Акционерное общество «D Bank» сообщает о запуске акции «Переходите на зарплатный проект от 1 февраля 2017 года по 31 мая 2017 года. </Описание>
   </Новость>
 </Новости> 
</Каталог> 
</xml>

Обращение к элементу списка:

$classificator = simplexml_load_file($xml_import)->Каталог->Новости->Новость;
foreach($classificator as $tov) {
 $ELEM_DATE = trim((string)$tov->Дата);
}

Или:

<xml version="1.0" encoding="utf-8">
 <Row>
   <Cell>
     <Data>15 марта 2017</Data>
   </Cell>
   <Cell>
     <Data>Информация о корпоративном событии</Data>
   </Cell>
   <Cell>
     <Data>Акционерное общество «D Bank» с местонахождением Республик ареста на денежные средства, находящиеся на банковском счете:</Data>
   </Cell>
 </Row>
</xml>

Обращение к элементу списка:

$classificator = simplexml_load_file($xml_import)->Row;
foreach($classificator as $tov){
 $ELEM_DATE = trim((string)$tov->Cell[0]->Data); //импортируем из файла поле с датой
 }

Не пропустить не одного закрывающего тега!
Задача. Требуется импортировать файл xml формата, перобразовать дату формата 15 марта 2017 в дату поддерживающююся битриксом(для свойства начало активности), а именно 15.03.2017 00:00:00.
И записать полученные значения в инфоблок с генерацией внешнего кода(для связи записей для языковых версий записей).

Файл импорта (import.php):

<?
function russian_date($ELEM_DATE){ //функция которая преобразует строковую дату в числовую
 preg_match("/[0-9]+/iu", $ELEM_DATE, $dd1);
 preg_match("/[a-zа-яё]+/iu", $ELEM_DATE, $dd2);
 preg_match("/[0-9]{4}+/iu", $ELEM_DATE, $dd3);
 if(iconv_strlen($dd1[0],'UTF-8')< 2 ){
 $dd1[0] = str_pad($dd1[0], 2, "0", STR_PAD_LEFT);
 }
 switch ($dd2[0]){
 case 'января': $m = '01'; break;
 case 'февраля': $m = '02'; break;
 case 'марта': $m = '03'; break;
 case 'апреля': $m = '04'; break;
 case 'май': $m = '05'; break;
 case 'июня': $m = '06'; break;
 case 'июля': $m = '07'; break;
 case 'августа': $m = '08'; break;
 case 'сентября':$m = '09'; break;
 case 'октября': $m = '10'; break;
 case 'ноября': $m = '11'; break;
 case 'декабря': $m = '12'; break;
 }
 $result = $dd1[0].'.'.$m.'.'.$dd3[0].' '.'00:00:00';
 return $result;
}

function section($ELEM_DATE){ //функция которая берет только год(для секций)
 preg_match("/[0-9]{4}+/iu", $ELEM_DATE, $dd3);
 $result = $dd3[0];
 return $result;
}
//шапка start
define("NO_KEEP_STATISTIC", true); // крон определяет собирать статистику или нет
define("NOT_CHECK_PERMISSIONS",true); // не учитывать уровни доступа
define("NO_AGENT_CHECK", true); //заставляет агенты запускаться, не давая переопределить константу NO_AGENT_CHECK
set_time_limit(0);// Устанавливает время в секундах, в течение которого скрипт может работать
$debug = ''; // для логов
define("LOG_FILENAME", $_SERVER["DOCUMENT_ROOT"]."/log_imp/log-m4-2017.txt"); //создаем файл с логами


require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); //подключаем пролог
$START_TIME = date("H:i:s"); // текущее время для логов (Время начала работы скрипта)

use Bitrix\Main\Loader, // подключаем для вызова модулей(D7)
 Bitrix\Main\Diag\Debug; //отладчик для логов(D7)

Loader::includeModule('iblock'); // подключаем модуль инфоблока

$Log = 'Обработка информации для акционеров и инвесторов:'; $debug .= $Log; echo $Log; //
$xml_import = $_SERVER["DOCUMENT_ROOT"].'/export/1cbitrix/iai_ru.xml'; //Ищем нужный файл на сервере
//шапка end
if (file_exists($xml_import)) //проверяем наличие файла
{
 $Log = "\n<br /> - ".'iai_ru.xml найден'; $debug .= $Log; echo $Log; //все ок

$iblock_id = 21; // определяем переменную, задаем инфоблок в который будем импортировать

$arResult = array(); // определяем массив 
 $rez = array(); // определяем массив
 $add = 0; // определяем переменную
 $deact = 0; // определяем переменную

$classificator = simplexml_load_file($xml_import)->Row; //Интерпретируем xml файл в объект и указываем корневой элемент

if (is_object($classificator)) // если объект (путь) присутствует
 {
 $e = new CIBlockElement; // определяем элемент для инфоблока хзхз

$arFilter = Array('IBLOCK_ID'=>$iblock_id); // Задаем фильтр по инфоблоку
 $db_list = CIBlockSection::GetList(Array(), $arFilter, false, array('ID', 'NAME'));// возвращаем несортированный, фильтрованный по ид инфоблоку, не возвращает количество элементов в разделе, выбираем ид и имя
 while($ar_result = $db_list->Fetch()) //крутим забираем данные 
 {
 $arS[$ar_result['NAME']] = $ar_result; //записываем в массив NAME
 }

$Log = "\n<br /> - ".'Разделов в каталоге - '.count($arS); $debug .= $Log; echo $Log;// логируем количество разделов

$i=1; //Идентифицируем переменную счетчика, для номера внешнего кода (т.к отчет начинает с 0)

foreach($classificator as $tov) //
 {
 $arPROP = array();//
 $ELEM_DATE = trim((string)$tov->Cell[0]->Data); //импортируем из файла поле с датой
 $ELEM_NAME = trim((string)$tov->Cell[1]->Data);//импортируем из файла название
 $DESC = (string)$tov->Cell[2]->Data;//импортируем из файла описание
 $REZ_DATE = russian_date($ELEM_DATE); //конвертированная дата
 $XML_ID = 'iai'.$i++;// генерируем внешний код

$REZ_YEAR = section($ELEM_DATE);// берем только год, т.к секции являются годом (2012)
 $name = $ELEM_NAME; //перевод в английский код название
 $arParams = array("replace_space"=>"-","replace_other"=>"-");//вставляем символ тире
 $trans = Cutil::translit($name,"ru",$arParams); // заменяем русские символы на английские
 $arCode[] = $trans; // записываем в массив название
 if(in_array($trans, $arCode)) // проверка на существование такого значения
 {
 $trans = $trans.randString(3);// если совпадает добавляем рандомное трехзначное число 
 $arCode[] = $trans; //записываем в массив название
 }
 $arPROP['DATA_s1'] = $ELEM_DATE;//добавляем в массив дату 
 $arPROP['NAME_s1'] = $ELEM_NAME;//добавляем в массив имя
 $arPROP['DESCRIPTION_s1'] = $DESC;//добавляем в массив описание
 $arFields = Array( //массив полей 
 'XML_ID' => $XML_ID, //добавляем внешний код
 'IBLOCK_ID'=>$iblock_id,// ид инфоблока
 'ACTIVE_FROM' => $REZ_DATE,// активную дату
 'NAME' => $ELEM_NAME,// имя
 'ACTIVE' => 'Y',// активность
 'IBLOCK_SECTION_ID' => $arS[$REZ_YEAR]['ID'],//определяем секцию и ид
 'PROPERTY_VALUES' => $arPROP,// свойства инфоблока
 'CODE'=>$trans//код транслит
 );
 if($idElement = $e->Add($arFields)) //добавляем поля в инфоблок
 $add++; //счетчик добавленных записей
 else//вывод ошибки
 {
 echo "Error: ".$e->LAST_ERROR;
 echo $trans.'- '.$ELEM_NAME;
 }
 }
 //подвал 
 $Log = "\n<br /> ---------------------------------------"; $debug .= $Log; echo $Log;//логи проверяещие работу иморта записей
 $Log = "\n<br /> - ".'Добавлено новостей - '.$add; $debug .= $Log; echo $Log; 
 $Log = "\n<br /> ---------------------------------------"; $debug .= $Log; echo $Log;
 $Log = "\n<br /> - ".'Занятая память - '.memory_get_usage(); $debug .= $Log; echo $Log;
 }
else
 {
 $Log = "\n<br /> - ".'Ошибка xml'; $debug .= $Log; echo $Log;//если файл не найден
 }
}

$Log = "\n<br /> ---------------------------------------"; $debug .= $Log; echo $Log;//логи проверяющие работу скрипта
$Log = "\n<br /> - ".'Время начала - '.$START_TIME; $debug .= $Log; echo $Log;
$Log = "\n<br /> - ".'Время завершения - '.date('H:i:s'); $debug .= $Log; echo $Log;
Debug::dumpToFile($debug, 'import_iai:', '/import_iai.txt');

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_after.php");//подключение эпилога

Задача импортировать в существующие элементы инфоблока по внешнему ключу новости другого языка.

Копируем шапку и подвал предыдущего скрипта. Указываем нужный файл.

if (file_exists($xml_import))
{
 $Log = "\n<br /> - ".'iai_kz.xml найден'; $debug .= $Log; echo $Log;

$iblock_id = 21;
 $arResult = array();
 $rez = array();
 $add = 0;
 $deact = 0;
 $classificator = simplexml_load_file($xml_import)->Row;
 if (is_object($classificator))
 {
 $e = new CIBlockElement;
 $arFilter = Array('IBLOCK_ID'=>$iblock_id);
 $db_list = CIBlockElement::GetList(Array(), $arFilter, false, false, array('XML_ID', 'ID'));//выбираем у элементов их ид и внешний код 
 while($ar_result = $db_list->Fetch())
 {
 $arE[$ar_result['XML_ID']] = $ar_result; //создаем массив с внешним кодом
 }
 $Log = "\n<br /> - ".'Элементов в каталоге - '.count($arE); $debug .= $Log; echo $Log;

$i=1;
 foreach($classificator as $tov)
 {
 $arPROP = array();//инициализируем массив свойств
 $ELEM_DATE = trim((string)$tov->Cell[0]->Data); //импортируем из файла поле с датой
 $ELEM_NAME = trim((string)$tov->Cell[1]->Data); //импортируем из файла поле с названием
 $DESC = (string)$tov->Cell[2]->Data; //импортируем из файла поле с описанием
 $XML_ID = 'iai'.$i++; //формируем внешний код для записи
 $arPROP['DATA_kz'] = $ELEM_DATE;
 $arPROP['NAME_kz'] = $ELEM_NAME;
 $arPROP['DESCRIPTION_kz'] = $DESC;
 CIBlockElement::SetPropertyValuesEx($arE[$XML_ID]['ID'], $iblock_id, $arPROP); //записываем массив свойств в инфоблок по внешнему ключу
 $add++;
 }
 $Log = "\n<br /> ---------------------------------------"; $debug .= $Log; echo $Log;
 $Log = "\n<br /> - ".'Добавлено записей - '.$add; $debug .= $Log; echo $Log;
 $Log = "\n<br /> ---------------------------------------"; $debug .= $Log; echo $Log;
 $Log = "\n<br /> - ".'Занятая память - '.memory_get_usage(); $debug .= $Log; echo $Log;
 }
 else
 {
 $Log = "\n<br /> - ".'Ошибка xml'; $debug .= $Log; echo $Log;
 }
}
else
{
 $Log = "\n<br /> - ".'import_iai_kz.xml отсутсвует'; $debug .= $Log; echo $Log;
}