/** * Обработчик ноды одноименной методу (без учета регистра) * * @param Xml_Object $xml * @return bool * @throws Exception */ public function generation_date(Xml_Object $xml) { $date = $this->CheckDate($xml->Get_Data()); if (is_null($date)) { Zero_Logs::Error('формат даты указан неверно (generation_date) ' . $xml->Get_Data()); throw new Exception(mysqli_connect_error(), 500); } return Zero_Logs::Info('дата обрабатываемого файла: ' . $date->format('Y-m-d H:i:s')); }
/** * Поиск нод по имени в передаваемом Xml объекте. * * @param Xml_Object $Xml_Object - Xml объект в котором производится поиск * @param string $name - имя ноды которую ищем * @return Xml_Object - найденая нода/список нод либо null */ public static function Search_Node(Xml_Object $Xml_Object, $name) { if (false != ($Xml = $Xml_Object->{$name})) { return $Xml; } else { foreach ($Xml_Object->Get_NodeTags() as $xml_list) { foreach ($xml_list as $xml) { if (false != ($Xml = self::Search_Node($xml, $name))) { return $Xml; } } } return null; } }
private function _Save(Xml_Object $Xml_Object, $depth = 0) { foreach ($Xml_Object->Get_NodeTags() as $xml_list) { foreach ($xml_list as $Xml) { $string = ''; /* @var $Xml Xml_Object */ // имя тега $string .= '<' . $Xml->Get_Name(); // атрибуты foreach ($Xml->Get_Attributes() as $a => $v) { $string .= ' ' . $a . '="' . self::String_Xml($v, $this->_Encoding) . '"'; } // значение ноды и запись в файл if (false != ($v = $Xml->Get_Data())) { // конечная нода с содержимым $string = $string . '><![CDATA[' . self::String_Xml($v, $this->_Encoding) . ']]></' . $Xml->Get_Name() . '>'; fputs($this->_Fp, str_repeat("\t", $depth) . $string . "\n"); } else { if (0 == count($Xml->Get_NodeTags())) { // конечная нода без содержимого $string = $string . '/>'; fputs($this->_Fp, str_repeat("\t", $depth) . $string . "\n"); } else { // родительская нода $string = $string . '>'; fputs($this->_Fp, str_repeat("\t", $depth) . $string . "\n"); $this->_Save($Xml, $depth + 1); fputs($this->_Fp, str_repeat("\t", $depth) . '</' . $Xml->Get_Name() . '>' . "\n"); } } } } }