xml解析类


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 分析类.上面是实用的例子,返回结果是一个二维数组 格式 $Result[x][xml标记]=xml标记值;
这里没有从 http 中取数据,要用另外一个类取数据.
*/
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 "不能创建 XML 解析器.<br />";
         return false;
      }
   }#Function 分析XML End.
   /*
   function SetNeedParse($NeedParse){
      $this->NeedParseArray=$NeedParse;
   }*/
   function SetNeedParseBlock($NeedParseBlock){
      $this->NeedParseBlockArray=$NeedParseBlock;
   }
   function SetXMLData($XMLData=NULL){//设置XML数据
      if($XMLData==""){ if($this->debug) echo "XML 数据为空.<br />";exit();
         return false;
      }
      $this->XMLData=$XMLData;
   }#Function SetXMLData End.

   function GetXMLData(){
      if($this->XMLData==""){   if($this->debug) echo "还没有设置 XML 数据.<br />";exit();
         return false;
      }
      return $this->XMLData;
   }#Function getXMLData End.   

   function ParseXMLData(){   
      if($this->debug && !$this->ParseHandle) echo "不能创建 XML 解析器.<br />";   
      //if(!is_array($this->NeedParseArray) && $this->debug) echo "请设置要分析的标记.<br />";
        $XMLData = $this->GetXMLData();

数据挖掘论坛


        $this->XMLData = preg_replace("/<?xml(.*)??".">/", ", $XMLData);
        if( trim($this->XMLData)=="" ){ if($this->debug) echo "XML 数据错误.<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数据 End.

   function StartTag($ParseHandle,$Tag,$Attrib){#解析器句柄,标记名称,标记属性(数组)      
      $this->OpenTag[$Tag];      
   }#Function 起始标记 End.

   function CData($ParseHandle=NULL,$DataString=NULL){   
      $this->TmpData=$DataString;
   }#Function 取数据 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 结束标记 End.      
   function Result(){
      $aTmp=$this->ReturnData;
      return $aTmp;
   }
#----------------------
}#Class 分析XML End.
#===========================
# 使用实例
#
#===========================
/*
$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);//设置需要分析的标记
   $xx->SetNeedParseBlock($NeedParseBlock);//设置需要分析的标记块 比如上面的块是 ValidError
   $xx->SetXMLData($XMLData);
   $xx->GetXMLData();   

数据挖掘论坛


   $xx->ParseXMLData();   //如果 === false 说明分析数据时发生错误
   
   $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();
?>
[数据挖掘专家] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:用Flash和XML来构造一个聊天室
下一篇:JSP取得在WEB.XML中定义的参数
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • W3C概述
  • ASP+soap调用web service的问题,高手帮忙
  • 什么是语义网?
  • RSS History
  • 求助,PHP讀取XML文件
  • xml+xsl+js实现一个有横向列的导航菜单?
  • XML基础之 DataSet加载XML数据文件
  • 如何在xml中保存图片,以二进制流的形式保存
  • XML & 数据融合
  • Final Component of the Complete Meta Dat
  • 论坛最新话题
  • Foundations of Statistical Natural Langu
  • Game Theory meet Data Mining: A Recent P
  • System Building: How does it help or hin
  • 数据挖掘与Clementine培训
  • 新手报到
  • 求 SASEM 客户流失预测分析
  • 数据挖掘工程师/搜索研究院—北京——无线
  • 数据挖掘入门介绍(如何着手数据挖掘)
  • Information Overload Survey Results
  • The INEX 2005 Workshop on Element Retrie
  • 相关资讯
  • What's Still Wrong with SQL Native XML I
  • Final Component of the Complete Meta Dat
  • What's Still Wrong with SQL Native XML I
  • XML及其技术指南
  • 保存.NET应用程序设置
  • 在.NET Framework中轻松处理XML数据(4
  • 将改变我们生活的这些XML应用之一
  • XML、Web服务和.NET框架
  • flash中通过XMLSocket监控生产系统(2
  • 将改变我们生活的这些XML应用之二
  • 数据挖掘实验室资料
  • 数据挖掘博客地址
  • 数据挖掘实验室网站地址
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静