一个简单的读取xml文件的类函数,输出数组格式,用到了xml.class.php函数库。
首先,来看这个xml类的使用方法:
require_once("xml.class.php");
$xmlParser=new xmlParser();
$xmlParser->xmlOpen($localfile);
var_dump($xmlParser);
附,php读取xml文件类代码:
复制代码 代码示例:
<?php
/**
* 解析XML类
*
*/
class xmlParser
{
var $params = array();
/**
* 读取XML文件
*
* @param unknown_type $file
*/
function xmlOpen($file){
$fp = @fopen($file, "r");
if (!$fp) die("不能打开数据源");
//读取文件
$this->data = fread($fp, filesize($file));
fclose($fp);
$this->xmlToArray();
} // www.plcxue.com
/**
* 把变量中数据导成数组
*
* @return unknown
*/
function xmlToArray()
{
$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;
}
}
?>