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); } }?>
复制代码
2,演示示例
loadxmlfile($xmlfile); if($flag){ print_r($xmldata); } echo response xmlstring\r\n; list($flag, $xmldata) = $xml_parser->loadxmlstring($xmlstring); if($flag){ print_r($xmldata); } echo ''; ?>
复制代码
附,php xml预定义常量: http://bbs.it-home.org/shouce/php5/libxml.constants.html