ȸ¿ø°¡ÀԡžÆÀ̵ð/ºñ¹øã±â
ȨÀ¸·Î


php xml parse 3Á¾ ¼¼Æ®
12³â Àü
<?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.'";');
       }
    }

?>
ÃßõÃßõ : 621 Ãßõ ¸ñ·Ï
¹øÈ£ Á¦¸ñ
php xml parse 3Á¾ ¼¼Æ®
102
php ³»ÀåÇÔ¼öÀ» ÀÌ¿ëÇÑ XML Parser
101
HTML À¥¹®¼­ÀÇ TAG Áö¿ì°í º»¹®¸¸ ³²±â±â, php ¸í·É¸ðµå¿¡¼­ ½ÇÇàÇϱâ
100
ÅÂ±× Á¦°Å ÇÔ¼ö strip_tags2 & ¸µÅ© ÃßÃâ ÇÔ¼ö extract_link
99
PHP ±â¹Ý À¥ Ž»ö±â ºñ±³
98
escape(), encodeURI(), encodeURIComponent() Â÷ÀÌÁ¡
97
php HereDoc(EDO)¹®ÀÚ »ç¿ë¹ý
96
include / require / include_once Â÷ÀÌÁ¡
95
(ÇÔ¼ö) ereg,eregi, Á¤±ÔÇ¥Çö½Ä
94
ob_start
93
htmlspecialchars
92
PHP Fatal error: Cannot redeclare class Object in
91
url¿¡ get°ª °¡Á®¿À±â
90
PHP ÀÚÁÖ ¾²´Â ÇÔ¼öµé
89
µð·ºÅ丮¿¡ ÀÖ´Â À̹ÌÁö ÆÄÀÏÀ» Àоîµé¿© º¸¿©ÁÖ´Â À̹ÌÁö °¶·¯¸®
88
µðºñ³»¿ëÀ» ¿¢¼¿ ÆÄÀÏ·Î ´Ù¿î·Îµå ½ÃÅ°´Â ¹æ¹ý
87
PHP¿¡¼­ MySQL Á¢¼ÓÇϱâ
86
PHP¿¡¼­ Á¢¼ÓÀÚ IP ¾Ë¾Æ³»±â
85
¸®´ª½º ftp ¸í·É¾î ¸ðÀ½
84
PHP ¹öºí¼ÒÆ® ¾Ë°í¸®Áò
83
PHP¿¡¼­ ¼º´É °³¼±À» À§ÇÑ À¯¿ëÇÑ ÆÁ
82
Flex¿Í PHP¸¦ ÀÌ¿ëÇؼ­ ¸¸µç ÆÄÀϾ÷·Îµå ¼Ò½º
81
PHP ÇöÀç Á¢¼ÓÀÚ ÇöȲ º¸¿©ÁÖ±â
80
PHP Caching to speed up
79
post, get, cookie, session º¯¼ö È®ÀÎ
78
PHP ¹®ÀÚ¿­Áß ¼ýÀÚ¸¸ ÃßÃâÇϱâ
77
¹«Á¶°Ç ¾Ë¾Æ¾ß ÇÒ PHP ¼Óµµ Å×½ºÆ® 14 °¡Áö
76
PHP ¹®ÀÚ¿­ ¿¬°áÇϱâ
75
PHP ¼ýÀÚ ÃµÀÚ¸®¸¶´Ù ÄÞ¸¶(½°Ç¥) Âï±â
74
PHP - RSS ¸®´õ±â
¸ñ·Ï
¹ÂÁ÷Æ®·ÎÆ® ºÎ»ê±¤¿ª½Ã ºÎ»êÁø±¸ °¡¾ßµ¿ ¤Ó °³ÀÎÁ¤º¸Ãë±Þ¹æħ
Copyright ¨Ï musictrot All rights reserved.