protected function parseImportCategories(SimpleXMLElement $xml) { if (false === ($importCategories = $xml->xpath('//config:import_categories/config:import_category'))) { return; } $con = Propel::getWriteConnection(ImportCategoryTableMap::DATABASE_NAME); $con->beginTransaction(); try { /** @var SimpleXMLElement $importCategory */ foreach ($importCategories as $importCategory) { $id = (string) $importCategory->getAttributeAsPhp("id"); $importCategoryModel = ImportCategoryQuery::create()->findOneByRef($id); if ($importCategoryModel === null) { $importCategoryModel = new ImportCategory(); $importCategoryModel->setRef($id)->save($con); } /** @var SimpleXMLElement $child */ foreach ($importCategory->children() as $child) { $locale = (string) $child->getAttributeAsPhp("locale"); $value = (string) $child; $importCategoryModel->setLocale($locale)->setTitle($value)->save($con); } } $con->commit(); } catch (\Exception $e) { $con->rollBack(); Tlog::getInstance()->error($e->getMessage()); } }