php的XML文件解釋類應(yīng)用實(shí)例
本文實(shí)例講述了php的XML文件解釋類及其用法,是非常實(shí)用的技巧。分享給大家供大家參考。具體如下:
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預(yù)定義常量可參考官方文檔:
http://www.php.net/manual/en/libxml.constants.php
希望本文所述對(duì)大家PHP程序設(shè)計(jì)的學(xué)習(xí)有所幫助。
- PHP簡(jiǎn)單讀取xml文件的方法示例
- php添加數(shù)據(jù)到xml文件的簡(jiǎn)單例子
- php使用simplexml_load_file加載XML文件并顯示XML的方法
- PHP中使用SimpleXML檢查XML文件結(jié)構(gòu)實(shí)例
- php獲取本地圖片文件并生成xml文件輸出具體思路
- PHP中3種生成XML文件方法的速度效率比較
- PHP中的生成XML文件的4種方法分享
- php中使用DOM類讀取XML文件的實(shí)現(xiàn)代碼
- php XPath對(duì)XML文件查找及修改實(shí)現(xiàn)代碼
- 生成ubuntu自動(dòng)切換壁紙xml文件的php代碼
- 使用PHP DOM-XML創(chuàng)建和解析XML文件
- php對(duì)xml文件的增刪改查操作實(shí)現(xiàn)方法分析
相關(guān)文章
解析PHP獲取當(dāng)前網(wǎng)址及域名的實(shí)現(xiàn)代碼
本篇文章是對(duì)PHP獲取當(dāng)前網(wǎng)址及域名的代碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
Javascript與PHP驗(yàn)證用戶輸入U(xiǎn)RL地址是否正確
這篇文章主要介紹了Javascript與PHP驗(yàn)證用戶輸入U(xiǎn)RL地址是否正確,在進(jìn)行web應(yīng)用程序開(kāi)發(fā)時(shí)非常實(shí)用,需要的朋友可以參考下2014-10-10
PHP中有關(guān)長(zhǎng)整數(shù)的一些操作教程
這篇文章主要給大家介紹了關(guān)于PHP中有關(guān)長(zhǎng)整數(shù)的一些操作教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用PHP具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
關(guān)于session在PHP5的配置文件中的詳細(xì)設(shè)置參數(shù)說(shuō)明
關(guān)于session在PHP5的配置文件中的詳細(xì)設(shè)置參數(shù)說(shuō)明,需要的朋友可以參考下。2011-04-04
PHP下通過(guò)系統(tǒng)信號(hào)量加鎖方式獲取遞增序列ID
前一陣子,設(shè)計(jì)LAJP時(shí)需要在PHP中生成唯一ID,看似小菜一碟卻著實(shí)讓我為難了,在Java中一個(gè)同步方法即可搞定的事,但在PHP中卻沒(méi)有好的解決思路。2009-09-09
學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)合成模式(composite)
這篇文章主要介紹了php設(shè)計(jì)模式中的合成模式,使用php實(shí)現(xiàn)合成模式,感興趣的小伙伴們可以參考一下2015-12-12

