<? php class DATA_XML ... { var $parser; //解释器 var $tags; //xml标签 var $on; //标签开始 var $root; //根元素 var $data = array(); //解析出来的数据放到数组 /**//* * * 构造函数 * @param $filename xml文件名 * @param $root xml文档根元素 */ function DATA_XML($filename,$root)...{ $this->root = $root; $this->parser = xml_parser_create(); xml_set_object(&$this->parser,&$this); xml_set_element_handler($this->parser,"tag_on","tag_off"); xml_set_character_data_handler($this->parser,"getdata"); xml_parser_set_option($this->parser,XML_OPTION_CASE_FOLDING,0); if(file_exists($filename))...{// iconv("utf-8", "big5", $filename); $fp = fopen($filename,"r"); $c = fread($fp,filesize($filename)); $this->parse($c); fclose($fp); } else...{ echo 'The file is not exists'; } } //解析函数 function parse($data)...{ xml_parse($this->parser,$data); } //发现元素触发函数 function tag_on($parser,$tag,$attributes)...{ $this->on = true; $this->tags = $tag; } //元素结束函数 function tag_off($parser,$tag)...{ $this->on = false; } //取出元素 function getdata($parser,$cdata)...{ if($this->on && $this->tags != $this->root)...{ $this->data[$this->tags][] = trim($cdata); } return $this->data; }} ?>