<?php

class DATA_XML...{
var $parser; //解释器
var $tags; //xml标签
var $on; //标签开始
var $root; //根元素
var $data = array(); //解析出来的数据放到数组

/**//*
* * 构造函数
* @param $filename xml文件名
* @param $root xml文档根元素
*/
function DATA_XML($filename,$root)...{
$this->root = $root;
$this->parser = xml_parser_create();
xml_set_object(&$this->parser,&$this);
xml_set_element_handler($this->parser,"tag_on","tag_off");
xml_set_character_data_handler($this->parser,"getdata");
xml_parser_set_option($this->parser,XML_OPTION_CASE_FOLDING,0);
if(file_exists($filename))...{
// iconv("utf-8", "big5", $filename);
$fp = fopen($filename,"r");
$c = fread($fp,filesize($filename));
$this->parse($c);
fclose($fp);
}
else...{
echo 'The file is not exists';
}
}
//解析函数
function parse($data)...{
xml_parse($this->parser,$data);
}
//发现元素触发函数
function tag_on($parser,$tag,$attributes)...{
$this->on = true;
$this->tags = $tag;
}
//元素结束函数
function tag_off($parser,$tag)...{
$this->on = false;
}
//取出元素
function getdata($parser,$cdata)...{
if($this->on && $this->tags != $this->root)...{
$this->data[$this->tags][] = trim($cdata);
}
return $this->data;
}
}
?>
本文介绍了一个使用PHP编写的XML解析器类,该类能够读取指定的XML文件,并通过定义的处理函数解析文件内容到数组中。解析过程包括处理XML元素的开始与结束以及字符数据。
1314

被折叠的 条评论
为什么被折叠?



