示例#1
0
文件: Test.php 项目: kshamiev/testXml
 /**
  * Обработчик ноды одноименной методу (без учета регистра)
  *
  * @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'));
 }
示例#2
0
 /**
  * Поиск нод по имени в передаваемом 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;
     }
 }
示例#3
0
 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");
                 }
             }
         }
     }
 }