加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php的XML文件解释类应用实例

发布时间:2020-12-12 20:24:00 所属栏目:PHP教程 来源:网络整理
导读:本篇章节讲解php的XML文件解释类及其用法,是非常实用的技巧。供大家参考研究。具体如下: XMLParser.class.php类文件如下: class XMLParser{ /** 读取xml文件 @param String $xmlfile @return Array */ public function loadXmlFile($xmlfile){ //

本篇章节讲解php的XML文件解释类及其用法,是非常实用的技巧。分享给大家供大家参考。具体如下:

XMLParser.class.php类文件如下:

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);
    }

/** 解释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示例程序如下:

$xmlfile = 'file.xml';
$xmlstring = '<?xml version="1.0" encoding="utf-8"?>

1000 100 fdipzone 1 28 '; echo '
'; 
$xml_parser = new XMLParser(); 
echo "response xmlfilern"; 
list($flag,$xmldata) = $xml_parser->loadXmlFile($xmlfile); 
if($flag){ 
  print_r($xmldata); 
} 
echo "response xmlstringrn"; 
list($flag,$xmldata) = $xml_parser->loadXmlString($xmlstring); 
if($flag){ 
  print_r($xmldata); 
} 
echo '
'; ?>

关于PHP的XML预定义常量可参考官方文档: http://www.php.net/manual/en/libxml.constants.php

希望本文所述对大家PHP程序设计的学习有所帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读