딱 이런 순서로 사용한다.
// initialize parser
$xml_parser = xml_parser_create();
// set callback functions
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!xml_parse($xml_parser, $result, TRUE))
{
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
// clean up
xml_parser_free($xml_parser);
다음으로, 여기서 각각의 XML Node 처리 함수를 구현하면 끝난다.
// use this to keep track of which tag the parser is currently processing
$currentTag = "";
$currentAttr = array();
$AttrCount = 0;
$currentValue = "";
function startElement($parser, $name, $attrs) {
global $currentTag, $currentAttr;
$currentTag = $name;
// output opening HTML tags
switch ($name) {
case "CODE":
break;
case "DESC":
break;
case "VALUES":
break;
case "ENCRYPTED":
break;
case "DECRYPTED":
break;
default:
break;
}
}
// process data between tags
function characterData($parser, $data) {
global $currentTag, $currentAttr, $AttrCount, $currentValue;
global $code, $desc;
// format the data
switch ($currentTag) {
case "CODE":
$code = $data;
break;
case "DESC":
$desc = $data;
break;
case "VALUES":
$currentAttr[$AttrCount] = $data;
break;
case "ENCRYPTED":
$currentValue = $data;
break;
case "DECRYPTED":
$currentValue = $data;
break;
default:
break;
}
}
function endElement($parser, $name) {
global $currentTag, $AttrCount;
// output closing HTML tags
switch ($name) {
case "CODE":
break;
case "DESC":
break;
case "VALUES":
$AttrCount++;
break;
case "ENCRYPTED":
break;
case "DECRYPTED":
break;
default:
break;
}
// clear current tag variable
$currentTag = "";
}
'Tech: > Linux·PHP' 카테고리의 다른 글
Linux에 PHP + Apache + MySQL 설치하기 (0) | 2008.06.26 |
---|---|
기타 유용한 정보들 (0) | 2008.06.26 |
XMLHttp 구현하기 (0) | 2008.06.26 |
Windows 2000에 PHP 모듈 설치법 (0) | 2008.06.26 |
UNIX - Linux 명령어 모음 (0) | 2008.06.26 |