The XMLParser.class.php class file is as follows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
/**XML file analysis class * Date: 2013-02-01 * Author: fdipzone * Ver: 1.0 * * func: * loadXmlFile($xmlfile) Read in xml file and output Array * loadXmlString($xmlstring) reads xmlstring and outputs Array */
class XMLParser{
/**Read xml file * @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); }
/**Explain xml content * @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); }
/**Check whether the xml format is correct * @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; } } } }
/**Output returns * @param boolean $flag true:false * @param Array $data converted data * @return Array */ private function response($flag=false, $data=array()){ return array($flag, $data); } } ?> |
Demo sample program is as follows:
4 11 12 |
<🎜>require "XMLParser.class.php"; <🎜>
<🎜> <🎜>
<🎜>$xmlfile = 'file.xml'; <🎜>
<🎜>$xmlstring = '
'; $xml_parser = new XMLParser(); echo "response xmlfilern"; list($flag, $xmldata) = $xml_parser->loadXmlFile($xmlfile); if($flag){ print_r($xmldata); } echo "response xmlstringrn"; list($flag, $xmldata) = $xml_parser->loadXmlString($xmlstring); if($flag){ print_r($xmldata); } echo ''; ?> |