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; }
|