<?php
$file = "http://slashdot.org/slashdot.xml";
$title = "";
$url = "";
$curtag = "";
>/** fonction startElement, déclenchée lorsque le parseur rencontre une balise XML du type**/
function startElement($parser, $name, $attrs) {
global $title, $url, $curtag;
$curtag = $name;
if ($name == "TITLE") $title = "";
if ($name == "URL") $url = "";
}
/** fonction endElement, déclenchée lorsque le parseur rencontre une balise XML du type **/function endElement($parser, $name) {
global $curtag, $url, $title;
$curtag = "";
if ($name == "URL") {
print "<li><a href=\"$url\">$title</a></li>\n";
}
}
/** fonction characterData, déclenchée lorsque le parseur rencontre des caractères, à l'intérieur d'un noeud XML **/function characterData($parser, $data) {
global $curtag, $url, $title;
if ($curtag == "URL")
$url .= $data;
if ($curtag == "TITLE")
$title .= $data;
} /** crée un nouveau parseur **/$xml_parser = xml_parser_create();
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true); /** enregistre les trois fonctions ci dessus **/
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($file, "r"))) {
die("Impossible d'ouvrir l'URL...");
}while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("erreur XML: %s à la ligne %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
}
}xml_parser_free($xml_parser);
?>