<?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);

?>