. */ namespace SP\Services\Import; use DOMDocument; use DOMElement; 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 * @param bool $required Indica si el nodo es requerido * * @throws ImportException */ protected function getNodesData($nodeName, $childNodeName, $callback, $required = true) { $ParentNode = $this->xmlDOM->getElementsByTagName($nodeName); if ($ParentNode->length === 0) { if ($required === true) { throw new ImportException( __u('Invalid XML format'), SPException::WARNING, sprintf(__('"%s" node doesn\'t exist'), $nodeName) ); } return; } if (!is_callable([$this, $callback])) { throw new ImportException(__u('Invalid Method'), SPException::WARNING); } /** @var DOMElement $nodes */ foreach ($ParentNode as $nodes) { /** @var DOMElement $Account */ foreach ($nodes->getElementsByTagName($childNodeName) as $node) { $this->$callback($node); } } } }