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程序设计的学习有所帮助。