<?php
* example 讀取數據:
*
* $xml = new xml("dbase.xml",'table');
*
* $data=$xml->xml_fetch_array();
*
* echo "<pre style="font-size:12px;">";
*
* print_r($data);
*
class xml
{
var $dbase; //數據庫,要讀取的XML文件
var $dbname; //數據庫名稱,頂層元素,與數據庫文件名稱一致
var $dbtable; //數據表,要取得的節點
var $parser; //剖析器
var $vals; //屬性
var $index; //索引
var $dbtable_array;//節點數組
var $array; //下級節點的數組
var $result; //返回的結果
var $querys;
function xml($dbase,$dbtable)
{
$this->dbase=$dbase;
$this->dbname=substr($dbase,strrpos($dbase,"/") 1,-4);
$this->dbtable=$dbtable;
$data=$this->ReadXml($this->dbase);
if(!$data){
die("無法讀取 $this->dbname.xml");
}
$this->parser = xml_parser_create();
xml_parser_set_option($this->parser,XML_OPTION_CASE_FOLDING,0);
xml_parser_set_option($this->parser,XML_OPTION_SKIP_WHITE,1);
xml_parse_into_struct($this->parser,$data,$this->vals,$this->index);
xml_parser_free($this->parser);
//遍歷索引,篩選出要取值的節點 節點名:$dbtable
foreach ($this->index as $key=>$val) {
if ($key == $this->dbtable) {
//取得節點數組
$this->dbtable_array = $val;
} else {
continue;
}
}
for ($i=0; $i < count($this->dbtable_array); $i =2) {
$offset = $this->dbtable_array[$i] 1;
$len = $this->dbtable_array[$i 1] - $offset;
//array_slice() 返回根據 offset 和 length 參數所指定的 array 數組中的一段序列。
//所取節點下級數組
$value=array_slice($this->vals,$offset,$len);
//取得有效數組,合並為結果數組
$this->array[]=$this->parseEFF($value);
}
return true;
}
//將XML文件讀入並返回字符串