php的XML文件解释类应用实例
2015-01-24信息快讯网
这篇文章主要介绍了php的XML文件解释类及其应用实例,包括针对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内容
* @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 转 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 转换后的数据
* @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>';
?>
关于PHP的XML预定义常量可参考官方文档:
http://www.php.net/manual/en/libxml.constants.php
希望本文所述对大家PHP程序设计的学习有所帮助。
php使用正则表达式获取图片url的方法
php使用CURL伪造IP和来源实例详解
php+mysql实现无限分类实例详解
php截取html字符串及自动补全html标签的方法
php在linux下检测mysql同步状态的方法
php导入excel文件到mysql数据库的方法
PHP上传文件时自动分配路径的方法
PHP中使用SimpleXML检查XML文件结构实例
php静态文件返回304技巧分享
php使用fputcsv()函数csv文件读写数据的方法
PHP中使用xmlreader读取xml数据示例
php中实现xml与mysql数据相互转换的方法
PHP使用xmllint命令处理xml与html的方法
php中Array2xml类实现数组转化成XML实例
php实现的CSS更新类实例
php实现的返回数据格式化类实例
php实现的替换敏感字符串类实例
php实现的发送带附件邮件类实例
PHP实现AES256加密算法实例
php生成QRcode实例
php操作csv文件代码实例汇总
PHP+iFrame实现页面无需刷新的异步文件上传
php中使用PHPExcel读写excel(xls)文件的方法
php修改指定文件后缀的方法
叫你如何修改Nginx与PHP的文件上传大小限制
php操作XML、读取数据和写入数据的实现代码
PHP采用XML-RPC构造Web Service实例教程
PHP关于htmlspecialchars、strip_tags、addslashes的解释
php的SimpleXML方法读写XML接口文件实例解析
php获取本地图片文件并生成xml文件输出具体思路