PHP

SAX API를 이용하여 xml을 파싱하는 예
  • 조회수 5,141
  • 작성일 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);
?>