本文实例讲述了PHP的XML文件解释类及其用法,是非常实用的技巧。分享给大家供大家参考。具体如下:
/** 读取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);
}
/** 解释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);
}
}
?>
Demo示例程序如下:
$xmlfile = 'file.xml';
$xmlstring = '<?xml version="1.0" encoding="utf-8"?>
'; $xml_parser = new XMLParser(); echo "response xmlfile\r\n"; list($flag,$xmldata) = $xml_parser->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://www.PHP.net/manual/en/libxml.constants.PHP
希望本文所述对大家PHP程序设计的学习有所帮助。
原文链接:https://www.f2er.com/php/23785.html