1C-Битрикс: Управление сайтом

CIBlockXMLFile(6.5.0)

CIBlockXMLFile - класс для работы с файлами XML.

Методы класса

МетодОписание
DropTemporaryTables  Удаляет таблицы, содержащие ранее загруженный файл.
CreateTemporaryTables  Создает таблицы для загрузки XML.
ReadXMLToDatabase Загрузка данных из файла в таблицы БД (пошаговая).
IndexTemporaryTablesИндексация таблиц для ускорения доступа.

Примеры использования

<?
$obXMLFile = new CIBlockXMLFile;
// Удаляем результат предыдущей загрузки
$obXMLFile->DropTemporaryTables();
// Подготавливаем БД
if(!$obXMLFile->CreateTemporaryTables())
return "Ошибка создания БД.";

if($fp = fopen($FILE_NAME, "rb"))
{
// Чтение содержимого файла за один шаг
$obXMLFile->ReadXMLToDatabase($fp, $NS, 0);
fclose($fp);
}
else
{
// Файл открыть не удалось
return "Ошибка открытия файла";
}

// Индексируем загруженные данные для ускорения доступа
if(!CIBlockXMLFile::IndexTemporaryTables())
return "Ошибка созния индексов БД.";

?>

Пользовательские комментарии

Пользовательские комментарии не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
0
Александр Пятницин
Не описан метод GetFilePosition, который возвращает объем прочитанных байт.
Можно получить процент обработанной информации в файле:
Код
if ($obXMLFile->ReadXMLToDat abase($fp, $NS, 10, 1024) ) {
    echo '<br/>Файл прочитан полностью.';
} else {
    echo '<br/>Файл прочитан не полностью: '.round($obXMLFile->GetFilePosition()/$total*100, 2).'%.';
}



Пример пошагового разбора файла:
Код
    echo '<br/>Парсим файл';
    $NS = &$_SESSION["BX_IMPORT_NS"];
    $ABS_FILE_NAME = $DOCUMENT_ROOT."/upload/TakeMe.xml";
    $total = filesize($ABS_FILE_NAME);
    if($fp = fopen($ABS_FILE_NAME, "rb")) {
        // Чтение содержимого файла шагом в 10 секунд
        if ($obXMLFile->ReadXMLToDat abase($fp, $NS, 10, 1024) ) {
            echo '<br/>Файл прочитан полностью.';
        } else {
            echo '<br/>Файл прочитан не полностью: '.round($obXMLFile->GetFilePosition()/$total*100, 2).'%.';
        }
        fclose($fp);
    } else {
        // Файл открыть не удалось
        echo "Ошибка открытия файла";
    }
© «Битрикс», 2001-2012, «1C-Битрикс», 2012