CD Album Report
");
break;
}
array_push($type_stack, $element_name);
}
function end_element($parser, $element_name) {
global $type_stack;
$type = array_pop($type_stack);
switch($type) {
case 'CD':
printf("\n");
break;
}
}
function char_handler($parser, $data) {
global $type_stack;
switch(end($type_stack)) {
case 'TITLE':
printf("%s
\n", $data);
printf("\n");
break;
case 'ARTIST':
printf("- artist: %s
\n", $data);
break;
case 'PRICE':
$price = (double)$data;
if ($price <= 9.00) {
printf("- price: %s
\n",
$data);
}
else {
printf("- price: %s
\n",
$data);
}
break;
case 'YEAR':
printf("- year: %s
\n", $data);
break;
}
}
$parser = xml_parser_create();
xml_set_element_handler($parser, 'start_element', 'end_element');
xml_set_character_data_handler($parser, 'char_handler');
$fp = fopen('cdcatalog.xml', 'r') or die ("cannot open cdcatalog.xml");
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)));
}
?>