홈으로 | 무료회원가입 | 아이디/비번찾기
추천음악방송
php xml parse 3종 세트
11년 전
<?php

    class Xml
    {
        var $data;
        var $encoding;
        var $arr;
        var $pointer;
        var $index;

        //$path            : 파일경로
        //$filename        : 파일명
        //$encoding        : UTF-8
        function xmlInit($filename, $encoding)
        {
            $fp = @fsockopen($filename, 80);

            if (!$fp)
            {
                die("XML : {$filename} 을 열수 없습니다.");
            }
            else
            {

                while (!feof($fp)) {
                    $data .= fgets ($fp,128);
                }
                fclose ($fp);

            }

            $this->encoding = $encoding;
            $this->data     = $data;
        }

        function xmlData()
        {
            $this->index = 0;
            $this->pointer[] = &$this->arr;

            $xml_parser = xml_parser_create($this->encoding);

            xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
            xml_set_object($xml_parser, &$this);
            xml_set_element_handler($xml_parser, "startElement", "endElement");
            xml_set_character_data_handler($xml_parser, "characterData");

            xml_parse($xml_parser, $this->data, true );
            xml_parser_free($xml_parser);
        }

        function startElement($parser, $tag, $attribute)
        {
            foreach($attribute as $name => $value)
            {
                $value = $this->cleanString($value);
                $object->$name = $value;
            }
            eval( "\$this->pointer[\$this->index]->" . $tag . "[] = \$object;");
            eval( "\$size = sizeof( \$this->pointer[\$this->index]->" . $tag . ");" );
            eval( "\$this->pointer[] = &\$this->pointer[\$this->index]->" . $tag . "[\$size-1];" );

            $this->index++;
        }

        function endElement($parser, $tag)
        {
            array_pop($this->pointer);
            $this->index--;
        }

        function characterData($parser, $data)
        {
            if(trim($data)) $this->pointer[$this->index] = trim($data);
        }

        function cleanString($string)
        {
            return utf8_decode(trim($string));
        }
    }

?>



<?php

    class Xml
    {
      var $tag;
      var $value;
      var $attributes;
      var $next;
    }

    function xml2array($xml_string)
    {
      $Parser = xml_parser_create();
      xml_parser_set_option($Parser, XML_OPTION_CASE_FOLDING, 0);
      xml_parser_set_option($Parser, XML_OPTION_SKIP_WHITE, 1);
      xml_parse_into_struct($Parser, $xml_string, $Xml_Values);
      xml_parser_free($Parser);
      $XmlClass = array();
      $LastObj = array();
      $NowObj = &$XmlClass;

      foreach($Xml_Values as $Xml_Key => $Xml_Value)
      {
          $Index = count($NowObj);
          if($Xml_Value["type"] == "complete")
          {
              $NowObj[$Index] = new Xml;
              $NowObj[$Index]->tag = $Xml_Value["tag"];
              $NowObj[$Index]->value = $Xml_Value["value"];
              $NowObj[$Index]->attributes = $Xml_Value["attributes"];
          }
          elseif($Xml_Value["type"] == "open")
          {
              $NowObj[$Index] = new Xml;
              $NowObj[$Index]->tag = $Xml_Value["tag"];
              $NowObj[$Index]->value = $Xml_Value["value"];
              $NowObj[$Index]->attributes = $Xml_Value["attributes"];
              $NowObj[$Index]->next = array();
              $LastObj[count($LastObj)] = &$NowObj;
              $NowObj = &$NowObj[$Index]->next;
          }
          elseif($Xml_Value["type"] == "close")
          {
              $NowObj = &$LastObj[count($LastObj) - 1];
              unset($LastObj[count($LastObj) - 1]);
          }

      }

      return $XmlClass;
    }

?>




<?php

    class xmlParse
    {
       var $node = array();
       var $xmlParser;
       var $result;
       var $temp;
       var $cou_node;

       function xmlParse($data,$type=1)
       {
          // Unset variable
          unset($this->xmlParser);
          unset($this->result);

          // Create XML Parser
          $this->xmlParser = xml_parser_create();

          // Set handler
          xml_set_object($this->xmlParser,&$this);
          xml_set_element_handler($this->xmlParser, "startElement", "endElement");
          xml_set_character_data_handler($this->xmlParser, "characterData");

          // File
          if($type==2)
          {
             if(!($temp = file($data)))
             {
                die("could not open XML input");
             }
             $fdata = join('',$temp);
             $fdata = str_replace("\n",'',$fdata);
             $fdata = str_replace("\r",'',$fdata);
             $fdata = str_replace("    ",'',$fdata);
             $fdata = trim($fdata);

             if(!xml_parse($this->xmlParser,$fdata)) return 0;

          // Variable
          } elseif($type==1)
          {
             // Parsing
             if(!xml_parse($this->xmlParser,$data)) return 0;
          }
       }

       // Return
       function ret()
       {
          // return Array
          return $this->result;
       }

       /////////////////////////////////////////////////////////////////////////////
       // private
       /////////////////////////////////////////////////////////////////////////////
       function startElement($parser, $name, $attribs)
       {
          // Add node, Clear TEMP
          array_push($this->node, $name);
          unset($this->temp);

          // Count nodes
          $count = count($this->node);
          $this->{'cou_'.$count.'_'.$this->node[$count-1]}++;

          // Create String What is for Eval
          for($i=0;$i<$count;$i++)
          {
             $this->temp.='[\''.$this->node[$i].'\']['.$this->{'cou_'.($i+1).'_'.$this->node[$i]}.']';
          }

          $string = $this->temp;
          eval('$this->result'.$string.'="";');

          if (count($attribs)) {
               while (list($k, $v) = each($attribs)) {
                eval('$this->result'.$string.'[\''.$k.'\']="'.$v.'";');
             }
          }
       }

       // private
       function endElement($parser, $name)
       {
          $count = count($this->node);
          $count++;
          $this->{'cou_'.$count.'_'.$this->node[$count]} = 0;

          unset($this->temp);
          array_pop($this->node);
       }

       // private
       function characterData($parser, $data)
       {
          $string = $this->temp;
          eval('$this->result'.$string.'="'.$data.'";');
       }
    }

?>
추천추천 : 574 추천 목록
번호 제목
3,033
 PHP 정규식 정리
3,032
 PHP 정규식을 활용한 태그 및 특정 문자열 제거 및 추출 방법
3,031
 php 크롤링 또는 파싱 함수, 정규식 모음
3,030
 제이쿼리 기본 명령어
3,029
 웹페이지 가로 모드세로 모드 인식하기
3,028
 모바일 웹 화면 강제 회전(가로모드 고정)
3,027
 [HTML5]에서 frameset 대체 방법과 iframe 속성
3,026
 HTML <Audio> 사용법
3,025
 윈도우10 시스템파일 손상 (초간단 오류 복구방법!!)
3,024
 PHP 파일 존재 여부 파악하기(로컬 파일 존재 및 원격지 파일 존재)
3,023
 [CSS] 박스 세로 가운데 중앙 정렬 6가지
3,022
 CSS Layout 수평 & 수직 정렬
3,021
 여러 도메인들 간 쿠키 공유하기
3,020
 태그 사이에 있는 텍스트를 추출
3,019
 [JQuery] textbox focus on off일때 숫자 콤마 보여주기
3,018
 쿠키 생성,가져오기,삭제
3,017
 사용자 함수 모음
3,016
 마우스,키보드 제한 ( 오른쪽클릭,드래그,영역선택등..)
3,015
 [HTML5] <video> - DOM으로 제어하기
3,014
 HTML5 video 태그에서 영상 좌우반전
3,013
 PHP - 특정 태그 및 문자열 추출, 제거
3,012
 [PHP] define과 defined의 차이
3,011
 우클릭 완벽차단 스크립트
3,010
 iframe 높이 100% 맞추기
3,009
 curl 함수를 이용한 HTTP REFERER 변경
목록
뮤직트로트 부산광역시 부산진구 가야동 ㅣ 개인정보취급방침
Copyright (C) musictrot All rights reserved.