电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

xml 解析類

瀏覽:198日期:2022-06-03 15:44:37

xml 解析類 <?php
ob_start();
/*                                                              
* Copyright (c) 2003 NightKids  <weidewang@magus-soft.com>                     
* All rights reserved.                                                        
*
* Redistribution and use in source and binary forms, with or without         
* modification, are permitted provided that the following conditions         
* are met:                                                                    
* 1. Redistributions of source code must retain the above copyright         
*    notice, this list of conditions and the following disclaimer.            
* 2. Redistributions in binary form must reproduce the above copyright        
*    notice, this list of conditions and the following disclaimer in the      
*    documentation and/or other materials provided with the distribution.   
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS"" AND      
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE      
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE   
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS   
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)      
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY  
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF      
* SUCH DAMAGE.
  */                    
################################
/*
Last modify 2003-10-24  10:41:11
XML 分析類.上面是實(shí)用的例子,返回結(jié)果是一個(gè)二維數(shù)組 格式 $Result[x][xml標(biāo)記]=xml標(biāo)記值;
這里沒有從 http 中取數(shù)據(jù),要用另外一個(gè)類取數(shù)據(jù).
*/
class z99ParseXML{
#----------------------
   var $ParseHandle=NULL; //解析器指針
   var $CharSet="utf-8";//編碼方式
   var $Tag=NULL;
   var $Attrib=array();
   var $DataString=NULL;
   var $XMLData=NULL;

   var $debug = false;

   var $ReturnData=array();

   var $CurrentTag=NULL;
   var $OpenTag=array();
   var $CloseTag=array();

   //var $NeedParseArray=array();
   var $NeedParseBlockArray=array();
   var $TagSum=0;

   var $CurrentTagA=NULL;

   var $TmpData=NULL;
#----------------------
   function z99ParseXML(){
      $this->ParseHandle = xml_parser_create($this->CharSet);      
      if(!$this->ParseHandle){ echo "不能創(chuàng)建 XML 解析器.<br />";
         return false;
      }
   }#Function 分析XML End.
   /*
   function SetNeedParse($NeedParse){
      $this->NeedParseArray=$NeedParse;
   }*/
   function SetNeedParseBlock($NeedParseBlock){
      $this->NeedParseBlockArray=$NeedParseBlock;
   }
   function SetXMLData($XMLData=NULL){//設(shè)置XML數(shù)據(jù)
      if($XMLData==""){ if($this->debug) echo "XML 數(shù)據(jù)為空.<br />";exit();
         return false;
      }
      $this->XMLData=$XMLData;
   }#Function SetXMLData End.

   function GetXMLData(){
      if($this->XMLData==""){   if($this->debug) echo "還沒有設(shè)置 XML 數(shù)據(jù).<br />";exit();
         return false;
      }
      return $this->XMLData;
   }#Function getXMLData End.   

   function ParseXMLData(){   
      if($this->debug && !$this->ParseHandle) echo "不能創(chuàng)建 XML 解析器.<br />";   
      //if(!is_array($this->NeedParseArray) && $this->debug) echo "請?jiān)O(shè)置要分析的標(biāo)記.<br />";
        $XMLData = $this->GetXMLData();
        $this->XMLData = preg_replace("/<\?xml(.*)?\?".">/", "", $XMLData);
        if( trim($this->XMLData)=="" ){ if($this->debug) echo "XML 數(shù)據(jù)錯(cuò)誤.<br />";
           return false;
          }
          xml_parser_set_option($this->ParseHandle, XML_OPTION_CASE_FOLDING, false);
      xml_parser_set_option($this->ParseHandle, XML_OPTION_TARGET_ENCODING, $this->CharSet);
      xml_set_object($this->ParseHandle, $this);
      xml_set_element_handler($this->ParseHandle, "StartTag", "EndTag");
      xml_set_character_data_handler($this->ParseHandle, "CData");
      if (!xml_parse($this->ParseHandle, $this->XMLData)) {
         if($this->debug)
             die(sprintf("XML error: %s at line %d",
                xml_error_string(xml_get_error_code($this->ParseHandle)),
                xml_get_current_line_number($this->ParseHandle)));
            return false;
        }
   }#Function 解析XML數(shù)據(jù) End.

   function StartTag($ParseHandle,$Tag,$Attrib){#解析器句柄,標(biāo)記名稱,標(biāo)記屬性(數(shù)組)      
      $this->OpenTag[$Tag];      
   }#Function 起始標(biāo)記 End.

   function CData($ParseHandle=NULL,$DataString=NULL){   
      $this->TmpData=$DataString;
   }#Function 取數(shù)據(jù) End.

   function EndTag($ParseHandle,$Tag){
      $NeedParse=$this->NeedParseBlockArray;      
      $this->CloseTag[$Tag];
      $this->CurrentTag=$Tag;
      $TmpData=$this->TmpData;
      $DataLen=strlen(trim($TmpData));
      if( $DataLen !=0 ){
         $this->ReturnData[$this->TagSum][$Tag]=$TmpData;
      }
      if(array_search($Tag,$NeedParse)!==false) $this->TagSum++;      
   }#Function 結(jié)束標(biāo)記 End.      
   function Result(){
      $aTmp=$this->ReturnData;
      return $aTmp;
   }
#----------------------
}#Class 分析XML End.
#===========================
# 使用實(shí)例
#
#===========================
/*
$XMLData= <<< EOD
<U-MAX>
    <ValidError>
        <ValidErrorCode>ErrorCode</ValidErrorCode>
        <ValidErrorInfo>The "ProductCode" element has an invalid value according to its data type. An error occurred at(35, 29).</ValidErrorInfo>
      <ErrMSG>Eraer23 asdf SGs</ErrMSG>
    </ValidError>
   <ValidError>
        <ValidErrorCode>ErrorCode1</ValidErrorCode>
        <ValidErrorInfo>111The "ProductCode" element has an invalid value according to its data type. An error occurred at(35, 29).</ValidErrorInfo>
      <ErrMSG>Errf aeaa SGs</ErrMSG>
    </ValidError>
   <ValidError>
        <ValidErrorCode>ErrorCo234</ValidErrorCode>
        <ValidErrorInfo>111The "ProductCode" element has an invalid value according to its data type. An error occurred at(35, 29).</ValidErrorInfo>
      <ErrMSG>Errfae asdfSGs</ErrMSG>
    </ValidError>
   <ValidError>
        <ValidErrorCode>Erasdfasode1</ValidErrorCode>
        <ValidErrorInfo>11fasd asdas a sd29).</ValidErrorInfo>
      <ErrMSG>Eafe3aeaSGs</ErrMSG>
    </ValidError>
</U-MAX>
EOD;
#===========================   
   //$NeedParse=array("ValidErrorCode","ValidErrorInfo");
   $NeedParseBlock=array("ValidError","Fuck");
   $xx = new z99ParseXML();   
   $xx->debug=true;   
   //$xx->SetNeedParse($NeedParse);//設(shè)置需要分析的標(biāo)記
   $xx->SetNeedParseBlock($NeedParseBlock);//設(shè)置需要分析的標(biāo)記塊 比如上面的塊是 ValidError
   $xx->SetXMLData($XMLData);
   $xx->GetXMLData();   
   $xx->ParseXMLData();   //如果 === false 說明分析數(shù)據(jù)時(shí)發(fā)生錯(cuò)誤

   $aa=$xx->Result();
   echo $aa[0][ValidErrorCode]."<br>";
   echo $aa[0][ErrMSG]."<br>";
   echo $aa[0][ValidErrorInfo]."<br>";
   echo "<br>";
   echo $aa[1][ValidErrorCode]."<br>";
   echo $aa[1][ErrMSG]."<br>";
   echo $aa[1][ValidErrorInfo]."<br>";
   for($i=0;$i<=count($aa)-1;$i++){
      //echo $aa[$i][ValidErrorCode];
      //echo $aa[$i][ValidErrorInfo]."<br>";
   }   
#===========================
*/
ob_end_flush();
?>
標(biāo)簽: XML/RSS
相關(guān)文章:
主站蜘蛛池模板: 深圳南财多媒体有限公司介绍 | 上海小程序开发-小程序制作-上海小程序定制开发公司-微信商城小程序-上海咏熠 | 时代北利离心机,实验室离心机,医用离心机,低速离心机DT5-2,美国SKC采样泵-上海京工实业有限公司 工业电炉,台车式电炉_厂家-淄博申华工业电炉有限公司 | 传动滚筒_厂家-淄博海恒机械制造厂 | 口臭的治疗方法,口臭怎么办,怎么除口臭,口臭的原因-口臭治疗网 | 济南侦探调查-济南调查取证-山东私家侦探-山东白豹调查咨询公司 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 | 上海办公室设计_办公楼,写字楼装修_办公室装修公司-匠御设计 | 不锈钢反应釜,不锈钢反应釜厂家-价格-威海鑫泰化工机械有限公司 不干胶标签-不干胶贴纸-不干胶标签定制-不干胶标签印刷厂-弗雷曼纸业(苏州)有限公司 | 警用|治安|保安|不锈钢岗亭-售货亭价格-垃圾分类亭-移动厕所厂家-苏州灿宇建材 | 济南冷库安装-山东冷库设计|建造|冷库维修-山东齐雪制冷设备有限公司 | 温州食堂承包 - 温州市尚膳餐饮管理有限公司 | 礼堂椅厂家|佛山市艺典家具有限公司 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 泥浆在线密度计厂家-防爆数字压力表-膜盒-远传压力表厂家-江苏大亚自控设备有限公司 | 网站优化公司_北京网站优化_抖音短视频代运营_抖音关键词seo优化排名-通则达网络 | 【法利莱住人集装箱厂家】—活动集装箱房,集装箱租赁_大品牌,更放心 | 粤丰硕水性环氧地坪漆-防静电自流平厂家-环保地坪涂料代理 | 壹车网 | 第一时间提供新车_资讯_报价_图片_排行! | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 定制/定做冲锋衣厂家/公司-订做/订制冲锋衣价格/费用-北京圣达信 | 工业淬火油烟净化器,北京油烟净化器厂家,热处理油烟净化器-北京众鑫百科 | 「阿尔法设计官网」工业设计_产品设计_产品外观设计 深圳工业设计公司 | DDoS安全防护官网-领先的DDoS安全防护服务商 | 雪花制冰机(实验室雪花制冰机)百科 | NMRV减速机|铝合金减速机|蜗轮蜗杆减速机|NMRV减速机厂家-东莞市台机减速机有限公司 | 酒吧霸屏软件_酒吧霸屏系统,酒吧微上墙,夜场霸屏软件,酒吧点歌软件,酒吧互动游戏,酒吧大屏幕软件系统下载 | 磁力链接搜索神器_BT磁力狗_CILIMAO磁力猫_高效磁力搜索引擎2024 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 光谱仪_积分球_分布光度计_灯具检测生产厂家_杭州松朗光电【官网】 | 交通信号灯生产厂家_红绿灯厂家_电子警察监控杆_标志杆厂家-沃霖电子科技 | 蜗轮丝杆升降机-螺旋升降机-丝杠升降机厂家-润驰传动 | 深圳南财多媒体有限公司介绍| 中细软知识产权_专业知识产权解决方案提供商 | 特种电缆厂家-硅橡胶耐高温电缆-耐低温补偿导线-安徽万邦特种电缆有限公司 | 电采暖锅炉_超低温空气源热泵_空气源热水器-鑫鲁禹电锅炉空气能热泵厂家 | 破碎机锤头_耐磨锤头_合金锤头-鼎成机械一站式耐磨铸件定制服务 微型驱动系统解决方案-深圳市兆威机电股份有限公司 | 带锯机|木工带锯机圆木推台锯|跑车带锯机|河北茂业机械制造有限公司| | 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 沧州友城管业有限公司-内外涂塑钢管-大口径螺旋钢管-涂塑螺旋管-保温钢管生产厂家 |