《PHP實(shí)戰(zhàn):php的XML文件解釋類應(yīng)用實(shí)例》要點(diǎn):
本文介紹了PHP實(shí)戰(zhàn):php的XML文件解釋類應(yīng)用實(shí)例,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
本文實(shí)例講述了php的XML文件解釋類及其用法,是非常實(shí)用的技巧.分享給大家供大家參考.具體如下:PHP實(shí)戰(zhàn)
XMLParser.class.php類文件如下:PHP實(shí)戰(zhàn)
<?php /** XML 文件分析類 * Date: 2013-02-01 * Author: fdipzone * Ver: 1.0 * * func: * loadXmlFile($xmlfile) 讀入xml文件輸出Array * loadXmlString($xmlstring) 讀入xmlstring 輸出Array */ class XMLParser{ /** 讀取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) = $this->parser($xmlstring); return $this->response($flag, $data); } /** 解釋xml內(nèi)容 * @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 轉(zhuǎn) 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 轉(zhuǎn)換后的數(shù)據(jù) * @return Array */ private function response($flag=false, $data=array()){ return array($flag, $data); } } ?>
Demo示例程序如下:PHP實(shí)戰(zhàn)
<?php require "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\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 '</pre>'; ?>
關(guān)于PHP的XML預(yù)定義常量可參考官方文檔:
http://www.php.net/manual/en/libxml.constants.phpPHP實(shí)戰(zhàn)
希望本文所述對(duì)大家PHP程序設(shè)計(jì)的學(xué)習(xí)有所贊助.PHP實(shí)戰(zhàn)
歡迎參與《PHP實(shí)戰(zhàn):php的XML文件解釋類應(yīng)用實(shí)例》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/14686.html