PHP-XML Demo: XML to HTML
This is a slightly modified example from the XML manual:
- Different data
- endElementHandle(parser, name) function fixed!)
Here we go:
$file = "choco-chip.xml";
// Put the key in upper case !
$map_array = array(
"LIST" => "list",
"RECIPE" => "hr",
"RECIPE_NAME" => "H1",
"AUTHOR" => "strong",
"MEAL" => "H2",
"COURSE" => "H3",
"INGREDIENTS" => "ol",
"ITEM" => "li",
"DIRECTIONS" => "p"
);
function startElement($parser, $name, $attrs)
{
global $map_array;
// print "DEBUG: $name
";
if ($htmltag = $map_array[$name]) {
print "<$htmltag>";
}
}
function endElement($parser, $name)
{
global $map_array;
if ($htmltag = $map_array[$name]) {
print "$htmltag>";
}
}
function characterData($parser, $data)
{
print $data;
}
$xml_parser = xml_parser_create();
// use case-folding so we are sure to find the tag in $map_array ;)
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>
D.K.S.