Welcome 微信登录

首页 / 网页编程 / PHP / php类:XML文件分析类

php类:XML文件分析类2014-08-29XMLParser.class.php

<?php/** XML 文件分析类 * Date: 2013-02-01 * Author: fdipzone * Ver:1.0 * * func: * loadXmlFile($xmlfile) 读入xml文件输出Array * loadXmlString($xmlstring) 读入xmlstring 输出Array */class XMLParser{/** 读取xml文件 * @paramString$xmlfile * @return Array */public function loadXmlFile($xmlfile){// get xmlfile content$xmlstring = file_exists($xmlfile)? file_get_contents($xmlfile) : "";// parser xmllist($flag, $data) = $this->parser($xmlstring);return $this->response($flag, $data);}/** 读取xmlstring * @paramString $xmlstring * @return Array */public function loadXmlString($xmlstring){// parser xmllist($flag, $data) = $this->parser($xmlstring);return $this->response($flag, $data);}/** 解释xml内容 * @param String $xmlstring * @returnArray */private function parser($xmlstring){$flag = false;$data = array();// check xml formatif($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格式是否正确 * @paramString $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:failreturn true;}else{return false;}}/** object 转 Array * @paramobject $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;}}}}/** 输出返回 * @paramboolean $flag true:false * @paramArray $data 转换后的数据 * @return Array */private function response($flag=false, $data=array()){return array($flag, $data);}}?>
Demo:

<?phprequire "XMLParser.class.php";$xmlfile = "file.xml";$xmlstring = "<?xml version="1.0" encoding="utf-8"?><xmlroot><status>1000</status><info></info><result><id>100</id><name>fdipzone</name><gender>1</gender><age>28</age></result></xmlroot>";echo "<pre>";$xml_parser = new XMLParser();echo "response xmlfile
";list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile);if($flag){print_r($xmldata);}echo "response xmlstring
";list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring);if($flag){print_r($xmldata);}echo "</pre>";?>
PHP XML预定义常量: http://www.php.net/manual/en/libxml.constants.php