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'); // сохранение файла
⚠️ **GitHub.com Fallback** ⚠️