php解析xml文档的类
		来源:互联网  作者:未知  发布时间:2008-01-11
		
		一个php用于解析xml文档的类 以下为引用的内容: ? ph
		
		
		
		      
一个php用于解析xml文档的类
    
        
            | 以下为引用的内容: 
 <?php/**
 *     类名: xmlParser
 *     描述: 解析xml文件,返回数组
 *     其他: 偶然
 */
 class xmlParser
 {
 var $params = array();
 
 
 //-----------------------------------------------------------------------------
 /**     BEGIN function
 *
 *     作者:偶然
 *     功能:构造初始化,打开文件并读取
 *     时间:2004.3.26
 *     变量:$file ----------- xml文件路径
 *     返回:none
 *     示例:
 *
 */
 function xmlParser($file)
 {
 $fp = @fopen($file, "r");
 if (!$fp) die("不能打开数据源");
 
 
 //读取文件
 $this->data = fread($fp, filesize($file));
 fclose($fp);
 $level = array();
 $xml_parser = xml_parser_create();
 
 
 // 将xml文件读入数组
 xml_parse_into_struct($xml_parser, $this->data, $vals, $index);
 xml_parser_free($xml_parser);
 
 
 foreach ($vals as $xml_elem)
 {
 // 元素结点展开
 if ($xml_elem['type'] == 'open')
 {
 if (array_key_exists('attributes',$xml_elem))
 {
 list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
 }
 else
 {
 $level[$xml_elem['level']] = $xml_elem['tag'];
 }
 }
 if ($xml_elem['type'] == 'complete')
 {
 $start_level = 1;
 $php_stmt = '$this->params';
 while($start_level < $xml_elem['level'])
 {
 $php_stmt .= '[$level['.$start_level.']]';
 $start_level++;
 }
 $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
 eval($php_stmt);
 }
 }
 Return $this->params;
 }
 
 |