一个用于解析xml文档的类

时间:2009-01-14 13:43:59   来源:第二电脑网上收集  作者:第二电脑网

  第二电脑网导读:(); //-----------------------------------------------------------------------------    /**  BEGIN function    *    *   作者:偶然    *   功能:构造初始化,打开文件并读取    *&nb...
  正文:
<?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;
    }
//-----------------------------------------------------------------------------
}
?>


来源:http://www.002pc.com/master/College/Programming/PHP/2008-11-27/4305.html

收藏到:

关于《一个用于解析xml文档的类》文章的评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

随机文章

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by rand() limit 10

顶出来的热门

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by diggtop desc,id desc limit 10
站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td