xml_file = $xml_file; $this->head_tag = $head_tag; $this->group_fields = $group_fields; $this->parser = xml_parser_create(); xml_set_object($this->parser,$this); xml_set_element_handler($this->parser,"startHandler","endHandler"); xml_set_character_data_handler($this->parser,"cDataHandler"); } function startHandler($xp, $element, $attribs) { //echo "START: $element \n"; $element = strtolower($element); if($element == $this->head_tag) { $this->count++; $this->cur_entry_fields = array(); } else if(!array_key_exists($element,$this->group_fields)) { if(array_key_exists($element,$this->cur_entry_fields)) { $this->cur_entry_fields[$element]++; } else { $this->cur_entry_fields[$element] = 1; } } } function endHandler($xp, $element) { $element = strtolower($element); if($element == $this->head_tag) { foreach($this->cur_entry_fields as $field=>$count) { if(array_key_exists($field,$this->main_fields)) { if($count > $this->main_fields[$field]) { $this->main_fields[$field] = $count; } } else { $this->main_fields[$field] = $count; } } } } function cDataHandler($xp, $data) { } function get_root_fields() { set_time_limit(1000); $in = fopen($this->xml_file,"r"); while($line = fgets($in)) { $xml = ereg_replace("&","amp;",$line); $good_parse = xml_parse($this->parser,$xml,false); if(!$good_parse) { echo "BAD PARSE: ".xml_get_current_line_number($this->parser)."
"; } } ksort($this->main_fields); return $this->main_fields; } } ?>