php解析xml数据格式,php XML文件解析类(附演示代码)

/** XML 文件分析类

*   Date:   2013-02-01

*   Author: fdipzone

*   Ver:    1.0

*   Edition www.jbxue.com

*   func:

*   loadXmlFile($xmlfile)     读入xml文件输出Array

*   loadXmlString($xmlstring) 读入xmlstring 输出Array

*/

class XMLParser{

/** 读取xml文件

* @param  String  $xmlfile

* @return Array

*/

public function loadXmlFile($xmlfile){

// get xmlfile content

$xmlstring = file_exists($xmlfile)? file_get_contents($xmlfile) : '';

// parser xml

list($flag, $data) = $this->parser($xmlstring);

return $this->response($flag, $data);

}

/** 读取xmlstring

* @param  String $xmlstring

* @return Array

*/

public function loadXmlString($xmlstring){

// parser xml

list($flag, $data) = $this->parser($xmlstring);

return $this->response($flag, $data);

}

/** 解释xml内容

* @param   String $xmlstring

* @return  Array

*/

private function parser($xmlstring){

$flag = false;

$data = array();

// check xml format

if($this->checkXmlFormat($xmlstring)){

$flag = true;

// xml to object

$data = simpleXML_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA);

// object to array

$this->objectToArray($data);

}

return array($flag, $data);

}

/** 检查xml格式是否正确

* @param  String $xmlstring

* @return boolean

*/

private function checkXmlFormat($xmlstring){

if($xmlstring==''){

return false;

}

$xml_parser_obj = xml_parser_create();

if(xml_parse_into_struct($xml_parser_obj, $xmlstring, $vals, $indexs)===1){ // 1:success 0:fail

return true;

}else{

return false;

}

}

/** object 转 Array

* @param  object $object

* @return Array

*/

private function objectToArray(&$object){

$object = (array)$object;

foreach($object as $key => $value){

if($value==''){

$object[$key] = "";

}else{

if(is_object($value) || is_array($value)){

$this->objectToArray($value);

$object[$key] = $value;

}

}

}

}

/** 输出返回

* @param  boolean $flag true:false

* @param  Array   $data 转换后的数据

* @return Array

*/

private function response($flag=false, $data=array()){

return array($flag, $data);

}

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值