* example 读取数据:
*
* $xml = new xml("dbase.xml",'table');
*
* $data=$xml->xml_fetch_array();
*
* echo "
";<br> *<br> * print_r($data);<br> *<br> <br> class xml<br> {<br> var $dbase; //数据库,要读取的XML文件<br> var $dbname; //数据库名称,顶层元素,与数据库文件名称一致<br> var $dbtable; //数据表,要取得的节点<br> var $parser; //剖析器<br> var $vals; //属性<br> var $index; //索引<br> var $dbtable_array;//节点数组<br> var $array; //下级节点的数组<br> var $result; //返回的结果<br> var $querys;<br> <br> function xml($dbase,$dbtable)<br> {<br> $this->dbase=$dbase;<br> $this->dbname=substr($dbase,strrpos($dbase,"/") 1,-4);<br> $this->dbtable=$dbtable;<br> $data=$this->ReadXml($this->dbase);<br> if(!$data){<br> die("无法读取 $this->dbname.xml");<br> }<br> $this->parser = xml_parser_create();<br> xml_parser_set_option($this->parser,XML_OPTION_CASE_FOLDING,0);<br> xml_parser_set_option($this->parser,XML_OPTION_SKIP_WHITE,1);<br> xml_parse_into_struct($this->parser,$data,$this->vals,$this->index);<br> xml_parser_free($this->parser);<br> //遍历索引,筛选出要取值的节点 节点名:$dbtable<br> foreach ($this->index as $key=>$val) {<br> if ($key == $this->dbtable) {<br> //取得节点数组<br> $this->dbtable_array = $val;<br> } else {<br> continue;<br> }<br> }<br> for ($i=0; $i dbtable_array); $i =2) {<br> $offset = $this->dbtable_array[$i] 1; <br> $len = $this->dbtable_array[$i 1] - $offset;<br> //array_slice() 返回根据 offset 和 length 参数所指定的 array 数组中的一段序列。<br> //所取节点下级数组<br> $value=array_slice($this->vals,$offset,$len);<br> //取得有效数组,合并为结果数组<br> $this->array[]=$this->parseEFF($value);<br> }<br> return true;<br> }<br> //将XML文件读入并返回字符串