PHP

    SAX API를 이용하여 xml을 파싱하는 예
    • 조회수 5,269
    • 작성일 2008-08-03
    •  

    books.xml

    <?xml version="1.0" encoding="euc-kr"?>
    <books>
     <book id="1">
      <title>kimho의 MySQL</title>
      <year>2003</year>
     </book>
     <book id="2">
      <title>kimho의 PHP</title>
      <year>2003</year>
     </book>
    </books>

    sax.php

    <?
    // XML 파서 객체를 생성한다.
    $parser_object = xml_parser_create();

    // 파싱에 대문자 변환을 사용하지 않는다.
    xml_parser_set_option($parser_object, XML_OPTION_CASE_FOLDING, false);

    // 파싱을 수행하는 함수
    function doParse($parser_object) {
     // books.xml 파일을 연다.
     if (!($fp = fopen("books.xml", "r")));

     // 루프를 돌면서 읽어온다.
     while ($daten = fread($fp, 4096))
     {
      // 읽어온 조각들을 파싱한다.
      xml_parse($parser_object, $daten, feof($fp));
     }
    }

    // 요소 핸들러 함수의 이름을 정의한다.
    xml_set_element_handler($parser_object, "startElement", "endElement");

    // 시작 요소 핸들러 함수
    function startElement($parser_object, $elementname, $attribute) {
     print "<ul>";
     print "$elementname \n";
     foreach ($attribute as $key => $value)
     {
      print "$key => $value; ";
     }
    }

    // 끝 요소 핸들러 함수
    function endElement($parser_object, $elementname) {
     print "</ul>\n";
    }

    doParse($parser_object);
    ?>