动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   PHP → 阅读文章

 一个用于解析xml文档的类

作者来源: 
阅读 2198 人次 , 2006-2-16 14:36:00 

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

  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:使用PHP开发qmail邮件服务器管理系统
· 下一篇:浅淡PHP生成HTML的思路
· PHP中重新定向到另一个页面
· Pattern Modifiers - 规则表达式的修饰符
· RPM安装PHP后应如何配置 Apache
· 模板,PHPLIB处理方式(二)
· PHP调用三种数据库的方法(1)


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077