protected function parseExportCategories(SimpleXMLElement $xml) { if (false === ($exportCategories = $xml->xpath('//config:export_categories/config:export_category'))) { return; } $con = Propel::getWriteConnection(ExportCategoryTableMap::DATABASE_NAME); $con->beginTransaction(); try { /** @var SimpleXMLElement $exportCategory */ foreach ($exportCategories as $exportCategory) { $id = (string) $exportCategory->getAttributeAsPhp("id"); $exportCategoryModel = ExportCategoryQuery::create()->findOneByRef($id); if ($exportCategoryModel === null) { $exportCategoryModel = new ExportCategory(); $exportCategoryModel->setRef($id)->save($con); } /** @var SimpleXMLElement $child */ foreach ($exportCategory->children() as $child) { $locale = (string) $child->getAttributeAsPhp("locale"); $value = (string) $child; $exportCategoryModel->setLocale($locale)->setTitle($value)->save($con); } } $con->commit(); } catch (\Exception $e) { $con->rollBack(); Tlog::getInstance()->error($e->getMessage()); } }