본문 바로가기

개발도구/PHP,ASP,JSP,SCRIPT

[파싱 xml - 잘 안씀] SimpleXMLElement Object


확인된 파서 이지만, 나한텐 사용하기  불편하여 사용하지 않았다.

function XMLParse($Data)
     {
          $rXml = xml_parser_create(); //xml 파서 생성
          $arXml = array();    //파싱된 xml을 저장할 임시 배열


          //대문자로 변경(default value=1, 0=disable, 1=enable)
          xml_parser_set_option($rXml, XML_OPTION_CASE_FOLDING, 0);

 

          //공백값 무시
          xml_parser_set_option($rXml, XML_OPTION_SKIP_WHITE, 1);

 

          //배열에 XML구조 저장
          xml_parse_into_struct($rXml, $Data, $arXml);


          xml_parser_free($rXml);

/*
          echo "<pre>";
          print_r($arXml);
          echo "</pre>";
*/

          //Charset 확인
          $ary[] = "ASCII";
          $ary[] = "EUC-KR";
          $ary[] = "UTF-8";

          $enc =  mb_detect_encoding($Data, $ary);

          echo "CharSet = ".$enc;

          //XML 배열 생성
          $NodeKey = 0; 
          foreach($arXml as $key => $arNode)
          {
               //'open', 'complete', 'close'로 구분
               switch ($arNode['type'])
               {
                    case 'open':
                         break;

                    case 'complete':
                         $arNode['value'] = mb_convert_encoding( $arNode['value'], "EUC-KR", $enc); //Charset 변경
                         $arXmlAssoc[$NodeKey][$arNode['tag']] = $arNode['value'];
                         break;

                    case 'close':
                         $NodeKey++;
                         break;
               }
          }

 

          return $arXmlAssoc;
     }


 $handle = fopen("coupon_list.asp", "rb");

 

     $contents = '';
     while (!feof($handle)) {
          $contents .= fread($handle, 8192);
     }
     fclose($handle);


     $ResultArr= XMLParse($contents);


     echo "<pre>";
    print_r($ResultArr);
     echo "</pre>";

 echo $ResultArr[1][STATUS];