ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [PHP] 47. XML Expat Parser - PHP 강좌, PHP5
    Web/PHP 2015. 6. 13. 14:11


    PHP XML Expat Parser

     내장된 XML Expat 파서는 PHP에서 XML 문서를 처리하는데 쉽게 해줍니다.





    1. The XML Expat Parser

     Expat 파서는 event-based 파서입니다.


     XML 부분을 봅시다:

    <from>Jani</from>




     event-based 파서는 3가지 이벤트로써 XML을 봅니다:

      - 시작 요소: from

      - 시작 CDATA 섹션, 값: Jani

      - 끝 요소: from


     XML Expat 파서 함수는 PHP 코어의 부분입니다. 설치할 필요없이 사용가능 합니다.







    2. Initializing the XML Expat Parser

     

     PHP에서 XML Expat 파서를 초기화하기 위해, 다른 XML 이벤트를 위한 몇몇의 처리기를 선언하고, XML 파일을 분석합니다.



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    <!DOCTYPE html>
    <html>
    <body>
     
    <?php
    //Initialize the XML parser
    $parser=xml_parser_create();
     
    //Function to use at the start of an element
    function start($parser,$element_name,$element_attrs) {
         switch($element_name) {
             case "NOTE":
             echo "-- Note --<br>";
         break;
             case "TO":
             echo "To: ";
         break;
             case "FROM":
             echo "From: ";
         break;
             case "HEADING":
             echo "Heading: ";
         break;
             case "BODY":
             echo "Message: ";
         }
    }
     
    //Function to use at the end of an element
    function stop($parser,$element_name) {
         echo "<br>";
    }
     
    //Function to use when finding character data
    function char($parser,$data) {
         echo $data;
    }
     
    //Specify element handler
    xml_set_element_handler($parser,"start","stop");
     
    //Specify data handler
    xml_set_character_data_handler($parser,"char");
     
    //Open XML file
    $fp=fopen("note.xml","r");
     
    //Read data
    while ($data=fread($fp,4096)) {
         xml_parse($parser,$data,feof($fp)) or 
         die (sprintf("XML Error: %s at line %d"
         xml_error_string(xml_get_error_code($parser)),
         xml_get_current_line_number($parser)));
    }
     
    //Free the XML parser
    xml_parser_free($parser);
    ?>
     
    </body>
    </html>
    cs

     



     






     

     예제 설명:

      1. xml_parser_create() 함수로 XML 파서 초기화

      2. 각각 이벤트 처리기를 사용하기 위한 함수 생성

      3. xml_set_element_handler() 함수에 파서가 여는 태그와 닫는 태그를 만날 때 실행되어 질 함수를 명시하여 추가.

      4. xml_set_character_data_handler() 함수에 파서가 문자 데이터를 만날 때 실행되어 질 명시된 함수를 추가.

      5. xml_parse() 함수로 note.xml을 분석.

      6. 에러가 났을 경우, xml_error_string() 함수로 XML 에러를 에러 설명으로 변환.

      7. xml_parser_free() 함수를 호출하여 xml_parser_create() 함수로 할당된 메모리를 풀어줌.





     







    * 이 강좌는 'w3schools'를 참조하여 작성하였습니다.

    댓글

Designed by Tistory.