Вход Регистрация
Файл: core/classes/class.xml2array.php
Строк: 33
<?php
#####################################
# ShopCMS: Скрипт интернет-магазина
# Copyright (c) by ADGroup
# http://shopcms.ru
#####################################

class xml2Array {

   var 
$arrOutput = array();
   var 
$resParser;
   var 
$strXmlData;

   function 
parse($strInputXML) {

           
$this->resParser xml_parser_create ();
           
xml_set_object($this->resParser,$this);
           
xml_set_element_handler($this->resParser"tagOpen""tagClosed");

           
xml_set_character_data_handler($this->resParser"tagData");

           
$this->strXmlData xml_parse($this->resParser,$strInputXML );
           if(!
$this->strXmlData) {
               die(
sprintf("XML error: %s at line %d",
           
xml_error_string(xml_get_error_code($this->resParser)),
           
xml_get_current_line_number($this->resParser)));
           }

           
xml_parser_free($this->resParser);

           return 
$this->arrOutput;
   }
   function 
tagOpen($parser$name$attrs) {
       
$tag=array("name"=>$name,"attrs"=>$attrs);
       
array_push($this->arrOutput,$tag);
   }

   function 
tagData($parser$tagData) {
       if(
trim($tagData)) {
           if(isset(
$this->arrOutput[count($this->arrOutput)-1]['tagData'])) {
               
$this->arrOutput[count($this->arrOutput)-1]['tagData'] .= $tagData;
           }
           else {
               
$this->arrOutput[count($this->arrOutput)-1]['tagData'] = $tagData;
           }
       }
   }

   function 
tagClosed($parser$name) {
       
$this->arrOutput[count($this->arrOutput)-2]['children'][] = $this->arrOutput[count($this->arrOutput)-1];
       
array_pop($this->arrOutput);
   }
}
?>
Онлайн: 0
Реклама