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
*/
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
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預定義常量可參考官方文檔:
http://www.php.net/manual/en/libxml.constants.php
希望本文所述對大家PHP程序設計的學習有所幫助。
- PHP簡單讀取xml文件的方法示例
- php添加數(shù)據(jù)到xml文件的簡單例子
- php使用simplexml_load_file加載XML文件并顯示XML的方法
- PHP中使用SimpleXML檢查XML文件結(jié)構(gòu)實例
- php獲取本地圖片文件并生成xml文件輸出具體思路
- PHP中3種生成XML文件方法的速度效率比較
- PHP中的生成XML文件的4種方法分享
- php中使用DOM類讀取XML文件的實現(xiàn)代碼
- php XPath對XML文件查找及修改實現(xiàn)代碼
- 生成ubuntu自動切換壁紙xml文件的php代碼
- 使用PHP DOM-XML創(chuàng)建和解析XML文件
- php對xml文件的增刪改查操作實現(xiàn)方法分析
相關(guān)文章
php常用數(shù)組array函數(shù)實例總結(jié)【賦值,拆分,合并,計算,添加,刪除,查詢,判斷,排序】
這篇文章主要介紹了php常用數(shù)組array函數(shù),結(jié)合實例形式總結(jié)分析了php常用的數(shù)組操作函數(shù),包括數(shù)組的賦值、拆分、合并、計算、添加、刪除、查詢、判斷、排序等,需要的朋友可以參考下2016-12-12
linux php mysql數(shù)據(jù)庫備份實現(xiàn)代碼
想在PHP后臺管理直接能夠備份數(shù)據(jù)庫,于是想呀想,一直沒有什么思路,一開始是考慮用php來訪問服務器安裝mysql的目錄,比如 /usr/local/mysql/data目錄,直接把下面對應的文件進行備份2009-03-03
PHP實現(xiàn)動態(tài)創(chuàng)建XML文檔的方法
這篇文章主要介紹了PHP實現(xiàn)動態(tài)創(chuàng)建XML文檔的方法,結(jié)合實例形式分析了php針對xml格式數(shù)據(jù)的構(gòu)建及文件讀寫相關(guān)操作技巧,需要的朋友可以參考下2018-03-03
php數(shù)據(jù)流中第K大元素的計算方法及代碼分析
在本篇文章里小編給大家整理了一篇關(guān)于php數(shù)據(jù)流中第K大元素的計算方法及代碼分析內(nèi)容,有興趣的朋友們可以學習下。2021-07-07

