Import XML - uniqcle/Bitrix GitHub Wiki
Просто парсинг xml файла
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
$rootToFile = __DIR__.'/data/data.xml';
getXmlToScreen($rootToFile);
function getXmlToScreen($rootToFile){
if (file_exists($rootToFile)) {
$xml = simplexml_load_file($rootToFile );
foreach($xml as $item):
echo $item->OLDID.'</br>';
echo $item->NAME.'</br>';
echo $item->DESCRIPTION.'</br>';
// <IMAGES>
foreach($item->IMAGES->children() as $img){
echo $img.'</br>';
}
// <SYKNO>
echo 'Сукно: </br>';
foreach($item->SYKNO->children() as $sykno){
echo 'Аттрибут '.$sykno->attributes(). ' Значение = '. $sykno .' </br>';
}
//VYKRASKA
echo 'Выкраска: </br>';
foreach($item->VIKRASKA->children() as $vykraska){
echo ' Аттрибут ' .$vykraska->attributes(). ' Значение '. $vykraska. '</br>';
}
// <OFFERS>
if(isset($item->OFFERS)) {
foreach ($item->OFFERS as $offer) {
foreach ($offer->children() as $item) {
echo '</br>' . 'Предложение: </br>';
echo $item->SIZE_FIELD . '</br>';
echo $item->GAME_TYPE . '</br>';
echo $item->TABLE_MATERIAL . '</br>';
echo $item->TABLE_TYPE . '</br>';
echo $item->QTY_LEGS . '</br>';
echo $item->VES . '</br>';
echo $item->PRICE . '</br>';
echo $item->ART . '</br>';
}
}
}
echo '<hr>';
endforeach;
// print_r($xml);
} else {
exit('Не удалось открыть файл');
}
}
Создание xml-файла из папок и файлов
<? require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
$dir = $_SERVER['DOCUMENT_ROOT'].'/download/pdf/';
$fileList = [];
// Перебираем папки и заносим файлы в $fileList
foreach (new DirectoryIterator($dir) as $dirInfo) {
if ( $dirInfo->isDot() ) continue;
$dirKod = $dir.$dirInfo->getFilename();
foreach(new DirectoryIterator($dirKod) as $fileInfo ){
if ( $fileInfo->isDot() ) continue;
$fileList[$dirInfo->getFilename()][] = $fileInfo->getFilename();
}
}
$countElements = count($fileList);
pre($fileList);
//Создает XML-строку и XML-документ при помощи DOM
$dom = new DomDocument('1.0');
//добавление корня - <books>
$products = $dom->appendChild($dom->createElement('PRODUCTS'));
#TODO Цикл по кол-ву элементов в инфоблоке
foreach($fileList as $key => $itemProduct) {
$product = $products->appendChild($dom->createElement('PRODUCT'));
$code = $product->appendChild($dom->createElement('CODE'));
$code->appendChild($dom->createTextNode($key));
$images = $product->appendChild($dom->createElement('IMAGES'));
$arImages = [
'/upload/3243/3243.png',
'/upload/3243/2341.png',
'/upload/3243/2345.png'
];
foreach($arImages as $value):
$option = $images->appendChild($dom->createElement('OPTION'));
$option->appendChild($dom->createTextNode($value));
#TODO сделать условие на картинки
$option->setAttribute("is_main", "YES"); // Устанавливаем аттрибут
endforeach;
}
//генерация xml
$dom->formatOutput = true; // установка атрибута formatOutput
// domDocument в значение true
// save XML as string or file
//$test1 = $dom->saveXML(); // передача строки в test1
$dom->save('test1.xml'); // сохранение файла