. */ namespace SP\Import; use Import\XmlFileImport; use SP\Core\Exceptions\SPException; defined('APP_ROOT') || die(); /** * Trait XmlImportTrait para manejar archivos de importación en formato XML * * @package SP */ trait XmlImportTrait { /** * @var \DOMDocument */ protected $xmlDOM; /** * @param \DOMDocument $xmlDOM */ public function setXmlDOM($xmlDOM) { $this->xmlDOM =& $xmlDOM; } /** * Obtener los datos de los nodos * * @param string $nodeName Nombre del nodo principal * @param string $childNodeName Nombre de los nodos hijos * @param string $callback Método a ejecutar * @throws SPException */ protected function getNodesData($nodeName, $childNodeName, $callback) { $ParentNode = $this->xmlDOM->getElementsByTagName($nodeName); if ($ParentNode->length === 0) { throw new SPException( SPException::SP_WARNING, __('Formato de XML inválido', false), sprintf(__('El nodo "%s" no existe'), $nodeName)); } elseif (!is_callable([$this, $callback])) { throw new SPException(SPException::SP_WARNING, __('Método inválido', false)); } /** @var \DOMElement $nodes */ foreach ($ParentNode as $nodes) { /** @var \DOMElement $Account */ foreach ($nodes->getElementsByTagName($childNodeName) as $Node) { $this->$callback($Node); } } } }