php的XML文件解释类应用实例
本文实例讲述了php的XML文件解释类及其用法,是非常实用的技巧。分享给大家供大家参考。具体如下:
XMLParser.class.php类文件如下:
<?php /**XML文件分析类 *Date:2013-02-01 *Author:fdipzone *Ver:1.0 * *func: *loadXmlFile($xmlfile)读入xml文件输出Array *loadXmlString($xmlstring)读入xmlstring输出Array */ classXMLParser{ /**读取xml文件 *@paramString$xmlfile *@returnArray */ publicfunctionloadXmlFile($xmlfile){ //getxmlfilecontent $xmlstring=file_exists($xmlfile)?file_get_contents($xmlfile):''; //parserxml list($flag,$data)=$this->parser($xmlstring); return$this->response($flag,$data); } /**读取xmlstring *@paramString$xmlstring *@returnArray */ publicfunctionloadXmlString($xmlstring){ //parserxml list($flag,$data)=$this->parser($xmlstring); return$this->response($flag,$data); } /**解释xml内容 *@paramString$xmlstring *@returnArray */ privatefunctionparser($xmlstring){ $flag=false; $data=array(); //checkxmlformat if($this->checkXmlFormat($xmlstring)){ $flag=true; //xmltoobject $data=simpleXML_load_string($xmlstring,'SimpleXMLElement',LIBXML_NOCDATA); //objecttoarray $this->objectToArray($data); } returnarray($flag,$data); } /**检查xml格式是否正确 *@paramString$xmlstring *@returnboolean */ privatefunctioncheckXmlFormat($xmlstring){ if($xmlstring==''){ returnfalse; } $xml_parser_obj=xml_parser_create(); if(xml_parse_into_struct($xml_parser_obj,$xmlstring,$vals,$indexs)===1){//1:success0:fail returntrue; }else{ returnfalse; } } /**object转Array *@paramobject$object *@returnArray */ privatefunctionobjectToArray(&$object){ $object=(array)$object; foreach($objectas$key=>$value){ if($value==''){ $object[$key]=""; }else{ if(is_object($value)||is_array($value)){ $this->objectToArray($value); $object[$key]=$value; } } } } /**输出返回 *@paramboolean$flagtrue:false *@paramArray$data转换后的数据 *@returnArray */ privatefunctionresponse($flag=false,$data=array()){ returnarray($flag,$data); } } ?>
Demo示例程序如下:
<?php require"XMLParser.class.php"; $xmlfile='file.xml'; $xmlstring='<?xmlversion="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=newXMLParser(); echo"responsexmlfile\r\n"; list($flag,$xmldata)=$xml_parser->loadXmlFile($xmlfile); if($flag){ print_r($xmldata); } echo"responsexmlstring\r\n"; 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
希望本文所述对大家PHP程序设计的学习有所帮助。