Битрикс и XML

Столкнулся я на днях с одной проблемой — нужно было сделать импорт пары xml-файлов в инфоблоки битрикса по крону. Собственно, это совершенно не проблема, но хотелось реализовать её полностью на API битрикса. И тут началось самое интересное.

Bitrix вообще-то умеет работать с xml. А версии 6.5 там вообще много чего хорошего появилось, типа пошагового импорта из xml/CommerceML. Но вот незадача — в документации нет ни слова про то, как работать с xml’ем через API.

Дело было ясное, что дело темное. Класс такой есть, но просто он не описан в документации. Так и оказалось. Подтверждение этому я нашел на партнерском форуме. Но всё, что там было сказано, так это о существовании класса CDataXML и о том, что он не описан в документации. Больше никаких упоминаний о битриксе и ручном иморте из xml мной найдено не было, что еще раз подтверждает мою теорию о том, что битриксом никто не пользуется хоть как-то глубже создания инфоблоков и их наполнения.

С горем пополам я нашел этот класс и то, как им пользоваться. Подключать класс, оказывается, нужно ручками. Ядро его не поддерживает по-умолчанию.

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/xml.php");

Дальше всё просто — создаем новый объект и скармливаем в него либо файл либо строку с xml. Причем файлы он кушает только локально и проверяет их на существование. Поэтому если надо что-то взять извне, то это что-то надо либо в строку запихнуть ручками, либо слить на текущий сервер.


$objXML = new CDataXML();
$objXML->Load($_SERVER['DOCUMENT_ROOT'].$file);
$arResult = $objXML->GetArray();

$arResult и будет наш массив. С ним уже работать просто.
Если нужно получить данные из строки, то делаем так:

objXML->LoadString($xmlstring);

На самом деле, тут нет ничего сложного, просто нигде в документации/форуме не описано как с этим работать. Вот я и подумал, что может это кому-то пригодиться.

В итоге весь код импорта xml уложился в 20 строк с проверкой обновлений элементов. А вывод того, что получилось — и вообще 0 строк кода :). Все про все заняло минут 20. За это я и люблю bitrix. Еще больше буду любить, когда в документацию все-таки внесут все, что есть в API.
***

И немного про Altastat. Пока мне там всё нравится! Контекст на каталоге сайтов и еще на одном… не знаю как его назвать… в общем сайте работает неплохо. Есть клики по 30 центов. Правда проверка бидов в интерфейсе альтастата что-то не работает, поэтому не могу посчитать что к чему. Так же мои сайты были одобрены для программы альтамедиа. Рич пока не пробовал, т.к. он итак сейчас откручивается неплохо. А вот топлайн включил, т.к. в adgravity топлайна всё еще нет. За сегодня уже 12 тысяч оплаченых показов. По 50 центов за 1000. Думаю, за сутки будет тысяч 30 или даже больше. 15 баксов в день-то не лишние :). И еще один большой плюс этой программы — у неё пока мало участников. Большой простор для привлечения рефералов.

В закладки!