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

(0)

相关推荐

  • php使用simplexml_load_file加载XML文件并显示XML的方法

    本文实例讲述了php使用simplexml_load_file加载XML文件并显示XML的方法.分享给大家供大家参考.具体实现方法如下: <?php $xml = simplexml_load_file("sample.xml"); echo htmlspecialchars($xml->asXML()); ?> sample.xml文件内容如下 <library> <book> <title>A</title> <

  • PHP中使用SimpleXML检查XML文件结构实例

    利用 SimpleXML 去检查 XML 结构是否符合规格,为了让这个程序可以多用途,采用了一个基准文件的作为结构准则,依据里面定义的节点跟属性,去检查文件是否符合基本要求的格式. 复制代码 代码如下: <?php        /**检查 XML 文件结构   * @param string $baseFilePath 基准结构文件   * @param string $checkFilePath 待检查文件   * @return bool 当结构与基准文件相符合时则传递 true,否则是

  • PHP简单读取xml文件的方法示例

    本文实例讲述了PHP简单读取xml文件的方法.分享给大家供大家参考,具体如下: 我将软件版本更新中的版本号等数据信息存放在xml文件中,使用时将版本信息读取出来. xml文件内容如下: <xml version="v1.01" encoding="utf-8"> <updataMessages> <version>v1.8.7</version> </updataMessages> </xml>

  • php中使用DOM类读取XML文件的实现代码

    主要功能:php中使用DOM类读取XML文件 设计知识点: 1.XML节点循环读取 2.用iconv()函数实现编码转换,防止中文乱码 holiday.xml文件如下 复制代码 代码如下: <?xml version="1.0" encoding="UTF-8"?> <daysOff-overTime> <year> <yearName>2012</yearName> <holiday> <

  • PHP中3种生成XML文件方法的速度效率比较

    PHP中3种生成XML文件方法的速度比较 有3种方法,分别是直接写;使用DomDocument;使用SimpleXML;其实还有第4种:使用XMLWriter,不过我没用过,也懒得试了.主要是想看看这3种方式哪个速度要快些直接上代码: 复制代码 代码如下: private function directWriteXml(&$data){  $xmltext='<?xml version="1.0" encoding="UTF-8" ?>';  $

  • php XPath对XML文件查找及修改实现代码

    复制代码 代码如下: <?php /* <?xml version="1.0" encoding="utf-8"?> <article> <item> <title name="t1">11</title> <content>content1</content> <pubdate>2009-10-11</pubdate> </i

  • php对xml文件的增删改查操作实现方法分析

    本文实例讲述了php对xml文件的增删改查操作实现方法.分享给大家供大家参考,具体如下: xml源文件 <?xml version="1.0" encoding="utf-8"?> <root> <endTime>2016-08-01</endTime> <content>文件内容</content> </root> $file='callBoard.xml'; 查询xml: $do

  • 生成ubuntu自动切换壁纸xml文件的php代码

    复制代码 代码如下: <?php /* * 生成ubuntu自动切换壁纸xml文件 */ //图片目录 $dir = '/home/yuxing/background'; $hd = opendir($dir) or die('can not open dir'); $files = array(); while($file = readdir($hd)) { $tem = "$dir/$file"; if (is_file($tem) && in_array(s

  • 使用PHP DOM-XML创建和解析XML文件

    使用PHP DOM-XML创建和解析XML文件 <?php    /**   * Topic:       Create and parse XML files using PHP DOM-XML   * Source:      http://www.php.net/domxml   * Reference:   http://www.zugeschaut-und-mitgebaut.de/php/extension.domxml.html   * Author:      urs@circl

  • PHP中的生成XML文件的4种方法分享

    生成如下XML串 Xml代码 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?><article>    <item>        <title size="1">title1</title>        <content>content1</content>        <pubdate>2009

  • php获取本地图片文件并生成xml文件输出具体思路

    复制代码 代码如下: <?php $dir="upload/"; $dir_res=opendir($dir); $fileFormat=array(0=>".jpg",1=>".gif",2=>".png",3=>".bmp"); $xmlData = ""; $xmlData .= "<photos>\n"; while(

  • php添加数据到xml文件的简单例子

    xml文件:stu.xml: <?xml version="1.0" encoding="utf-8" ?> <AllData> <xueshengmen> <xuesheng> <name>张三</name> <yuwen>80</yuwen> <shuxue>90</shuxue> <yingyu>70</yingyu>

随机推荐