output) < 1) { return; } $this->output = array_shift($this->output); return $this->output; } /** * Start element handler * @param resource $parser an instance of parser * @param string $node_name a name of node * @param array $attrs attributes to be set * @return void */ function _tagOpen($parser, $node_name, $attrs) { $obj = new stdClass(); $obj->node_name = strtolower($node_name); $obj->attrs = $attrs; $obj->childNodes = array(); $this->output[] = $obj; } /** * Character data handler * Variable in the last element of this->output * @param resource $parse an instance of parser * @param string $body a data to be added * @return void */ function _tagBody($parser, $body) { //if(!trim($body)) return; $this->output[count($this->output) - 1]->body .= $body; } /** * End element handler * @param resource $parse an instance of parser * @param string $node_name name of xml node * @return void */ function _tagClosed($parser, $node_name) { $node_name = strtolower($node_name); $cur_obj = array_pop($this->output); $parent_obj = &$this->output[count($this->output) - 1]; $tmp_obj = &$parent_obj->childNodes[$node_name]; if($tmp_obj) { if(is_array($tmp_obj)) { $tmp_obj[] = $cur_obj; } else { $tmp_obj = array($tmp_obj, $cur_obj); } } else { $tmp_obj = $cur_obj; } } }