ответов: 15

  1. seva
    23 Май 2008

    Не могли бы Вы поподробнее рассказать об этом: где и какие модули подключить и как осуществить импорт XML файлов через API, не открывая БИТРИКС. Заранее Вым благодарен.

  2. Padlik
    7 Июнь 2008

    Не открывая битрикс — это как?
    Вообще в документации по битриксу все расписано. Модуль нужен только CMain. Дополнительно ничего подключать не нужно.

  3. Al
    24 Июль 2009

    >> «В итоге весь код импорта xml уложился в 20 строк с проверкой обновлений элементов»

    А можно узнать эти 20 строк? Я так понял, что этот код:
    $objXML = new CDataXML();
    $objXML->Load($_SERVER[‘DOCUMENT_ROOT’].$file);
    $arResult = $objXML->GetArray();

    Создает из xml’a массив, а вот как дальше распихать этот массив по инфоблокам непонятно.

    Заранее спасибо)

  4. Padlik
    24 Июль 2009

    @Al так это ж элементарно.
    Пройтись по нему циклом, и через API запихать ($b=new CIBlockElement; $b->Add($array));
    все есть в документации

  5. Al
    24 Июль 2009

    Спасибо за оперативность)

    А можно рабочий пример? Так будет гораздо нагляднее.

    В экспортированном xml’e все как то хитро переплетено, по уму бы сделать иерархию понятную вроде:

    Тут все понятно было бы, создать новый тип инфоблока, передать в него массив «тип инфоблока», потом создать инфоблок и передать в него массив «инфоблок». И на третьем этапе для каждого элемента массива «элементы» создать соответственно элемент.

    На деле у меня примерно такая структура просматривается, хотя может я как то криво смотрю:

    Тут свойства самого типа инфоблока

    И фиг пойми как оттуда данные вытаскивать.

  6. Al
    24 Июль 2009

    Блин. Все тэги обрезало(((

    Ладно попробуем подругому. В прошлом посте первый вариант, тот который хотелось бы видеть:

    <хмл
    <тип инфоблока
    </тип инфоблока

    <инфоблок
    </инфоблок

    <элементы
    </элементы
    </хмл

    Второй вариант который у меня на самом деле из экспортированного файла:

    <хмл
    <инфоблок
    </инфоблок

    <тип инфоблока
    Тут свойства самого типа инфоблока
    <элементы
    </элементы
    </тип инфоблока
    </хмл

    И фиг пойми как оттуда данные вытаскивать.

  7. Padlik
    24 Июль 2009

    Ну конкретный пример сложно привести. У меня было достаточно просто. Я руками создал инфоблок и все свойства его, а потом тупо туда засовывал данные из xml-массива. Скажу чествно, уже не помню, для какого проекта я это делал, ибо запись двухлетней давности :). Найти будет непросто.

  8. Padlik
    24 Июль 2009

    ну смотри, после $arResult = $objXML->GetArray(); у тебя получается массив $arResult;
    сделай ему print_r($arResult) и вся структура массива сразу станет видна. А дальше тупо циклами там ходишь и всё.

  9. Al
    24 Июль 2009

    >> «ну смотри, после $arResult = $objXML->GetArray(); у тебя получается массив $arResult;
    сделай ему print_r($arResult) и вся структура массива сразу станет видна.»

    Да я собственно так и сделал)
    После такого импорта arResult получается точно такой как xml, то есть все вложенные тэги это подмассивы.

    Ту загадочную структуру xml которую создает битрикс я уже привел выше во втором варианте :) Просто циклами там не получиться там придется как то похитрому делать) Я так думаю руками придется указывать все кроме самих элементов, а их как раз циклом сделать.

    Ладно, спасибо за пояснения буду пробовать)

  10. itizhru
    27 Сентябрь 2010

    А толку от таких сложных действий никакого.

    ImportXMLFile(«/load_xml/».$file_xml[$i], $iblock_type=»schedule», $site_id=false, $section_action=»D», $element_action=»D», $use_crc=false, $preview=false);

    И все.

  11. mishal
    10 Ноябрь 2010

    2 itizhru
    ImportXMLFile (http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockcmlimport/index.php) не позволяет сделать настраиваемой загрузку, т.е. делает импорт только из файла типа CommerceML2

  12. Padlik
    17 Ноябрь 2010

    importxmlfile делает импорт в инфоблок
    а порой нужно просто работать с xml

  13. Lector
    15 Август 2011

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

  14. Дарья
    11 Февраль 2013

    Прошу помощи: есть ли в битриксе возможность через API записать в инфоблок информацию не представлению в XML. У меня есть строки: заголовок статьи и ее краткое содержание. Мне их необходимо записать в уже существующий инфоблок.
    Буду благодарна за любую информацию.

    • Padlik
      14 Март 2013

      Конечно можно. API очень развесистый, который позволяет делать все что угодно

Ответить

 

 

 

Наверх
мобильн. компьютерная