xml_parser = xml_parser_create(); $rss_parser->parse_results($rss_parser, "http://auctions.overstock.com/rss/seller/8162545/listings.xml"); *************************************************/ class RSSParser { private $title = ""; private $link = ""; private $description = ""; private $inside_item = false; private $current_tag; public $xml_parser; private function startElement($parser, $name, $attrs='') { $this->current_tag = $name; if($this->current_tag == "ITEM") $this->inside_item = true; } private function endElement($parser, $tagName, $attrs='') { if($tagName == "ITEM") { printf("\t
%s\n", trim($this->link), htmlspecialchars(trim($this->title))); print("
"); printf("\t
%s
\n", str_replace("description))); $this->title = ""; $this->description = ""; $this->link = ""; $this->inside_item = false; } } private function characterData($parser, $data) { if($this->inside_item) { switch($this->current_tag) { case "TITLE": $this->title.= $data; break; case "DESCRIPTION": $this->description.= $data; break; case "LINK": $this->link.= $data; break; default: break; } } } public function parse_results($rss_parser, $file) { xml_set_object($this->xml_parser, &$rss_parser); xml_set_element_handler($this->xml_parser, "startElement", "endElement"); xml_set_character_data_handler($this->xml_parser, "characterData"); $fp = fopen("$file","r") or die("Error reading XML file, ".$file); while($data = fread($fp, 4096)) { xml_parse($this->xml_parser, $data, feof($fp)) or die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($this->xml_parser)), xml_get_current_line_number($this->xml_parser))); } fclose($fp); xml_parser_free($this->xml_parser); } } ?>