function ReadXMLToDatabase($fp, &$NS, $time_limit = 0, $read_size = 1024) { return $this->_xml_file->ReadXMLToDatabase($fp, $NS, $time_limit, $read_size); }
} elseif ($NS["STEP"] == 1) { if (CIBlockXMLFile::CreateTemporaryTables()) { $strMessage = GetMessage("CC_BSC1_TABLES_CREATED"); $NS["STEP"] = 2; foreach (GetModuleEvents("catalog", "OnBeforeCatalogImport1C", true) as $arEvent) { $strError = ExecuteModuleEventEx($arEvent, array($arParams, $ABS_FILE_NAME)); } } else { $strError = GetMessage("CC_BSC1_TABLE_CREATE_ERROR"); } } elseif ($NS["STEP"] == 2) { $fp = fopen($ABS_FILE_NAME, "rb"); $total = filesize($ABS_FILE_NAME); if ($total > 0 && is_resource($fp)) { $obXMLFile = new CIBlockXMLFile(); if ($obXMLFile->ReadXMLToDatabase($fp, $NS, $arParams["INTERVAL"])) { $NS["STEP"] = 3; $strMessage = GetMessage("CC_BSC1_FILE_READ"); } else { $strMessage = GetMessage("CC_BSC1_FILE_PROGRESS", array("#PERCENT#" => $total > 0 ? round($obXMLFile->GetFilePosition() / $total * 100, 2) : 0)); } fclose($fp); } else { $strError = GetMessage("CC_BSC1_FILE_ERROR"); } } elseif ($NS["STEP"] == 3) { if (CIBlockXMLFile::IndexTemporaryTables()) { $strMessage = GetMessage("CC_BSC1_INDEX_CREATED"); $NS["STEP"] = 4; } else { $strError = GetMessage("CC_BSC1_INDEX_CREATE_ERROR");
public function _testBitrixXMLParser() { \CModule::IncludeModule('iblock'); $BXParser = new \CIBlockXMLFile('dvt_yml_import_temp'); $BXParser->CreateTemporaryTables(); $NS = array(); $fp = fopen(static::_DIR_ . '/data/yml_catalog_example.xml', 'r'); $BXParser->ReadXMLToDatabase($fp, $NS, 0, 10240); }
$NS["STEP"]++; else $arErrors[] = GetMessage("IBLOCK_CML2_WRONG_FILE_ERROR"); } elseif($NS["STEP"] < 2) { if(CIBlockXMLFile::CreateTemporaryTables()) $NS["STEP"]++; else $arErrors[] = GetMessage("IBLOCK_CML2_TABLE_CREATE_ERROR"); } elseif($NS["STEP"] < 3) { if(file_exists($ABS_FILE_NAME) && is_file($ABS_FILE_NAME) && ($fp = fopen($ABS_FILE_NAME, "rb"))) { if($obXMLFile->ReadXMLToDatabase($fp, $NS, $INTERVAL)) $NS["STEP"]++; fclose($fp); } else { $arErrors[] = GetMessage("IBLOCK_CML2_FILE_ERROR"); } } elseif($NS["STEP"] < 4) { if(CIBlockXMLFile::IndexTemporaryTables()) $NS["STEP"]++; else $arErrors[] = GetMessage("IBLOCK_CML2_INDEX_ERROR"); }