Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18673010
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类:

2008-05-29 09:40:39

一个php用于解析xml文档的类

以下为引用的内容:

php
/**
*     类名: xmlParser
*     描述: 解析xml文件,返回数组
*     其他: 偶然
*/
class 
xmlParser
{
var 
$params 
= array();  phperz.com


//-----------------------------------------------------------------------------
     /**     BEGIN function
     *
     *     作者:偶然
     *     功能:构造初始化,打开文件并读取
     *     时间:2004.3.26
     *     变量:$file ----------- xml文件路径
     *     返回:none
     *     示例:
     *
     */
     
function xmlParser($file
) php程序员站
     {
             
$fp = @fopen($file"r"
);
             if (!
$fp) die("不能打开数据源"
);


             
//读取文件
             
$this->data fread($fpfilesize($file
));

php程序员之家


             
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'
) php程序员之家
                 {
                     if (
array_key_exists('attributes',$xml_elem
))
                     {
                             list(
$level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes'
]); www~phperz~com
                     }
                     else
                     {
                             
$level[$xml_elem['level']] = $xml_elem['tag'
];
                     } php程序员之家
                 }
                 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
++;

phperz.com


                     }
                     
$php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];'
;
                     eval(
$php_stmt
);
                 }
             }
             Return 
$this->params
; php程序员站
     }


//-----------------------------------------------------------------------------
}
?>
phperz.com
阅读(360) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~