Steve, Did you take a look at the raw data returned by the fsockopen file pointer. There may be some http headers that are tripping up the xml parser. -----Original Message----- From: Steve Haemelinck [mailto:[EMAIL PROTECTED]] Sent: Tuesday, February 13, 2001 12:07 PM To: PHP Mailing Listl (E-mail) Subject: [PHP] XML Parsing through Proxy Hi Anybody got an idea? I am sitting behind a proxy and I want to able to parse an XML. So I have to use fsockopen() to get through my firewall and get the page. So far, everything goes wel, but I am not able to parse the file, because I think it is not in XML format if I use "GET http://.... " Does anyone has an idea how I can solve this? My code so far (bits and pieces of anywhere :) ) Steve <?php ######################################################### # Parse XML through Proxy # ######################################################### // Define Variables # Proxy Settings $proxy_ip="proxy.server.be"; $proxy_port=8080; # XML Mapping $map_array = array( "NASDAQAMEX-DOT-COM" => "HEADER_TAG", "ISSUE-NAME" => "STOCK_NAME", "LAST-SALE-PRICE" => "LAST_SALE", "PREVIOUS-CLOSE-PRICE" => "PREVIOUS_SALE", "NET-CHANGE-PRICE" => "CHANGE", "NET-CHANGE-PCT" => "CHANGE_PCT", "TODAYS-HIGH-PRICE" => "TODAYS_HIGH", "TODAYS-LOW-PRICE" => "TODAYS_LOW", ); # XML File to Parse $xmlFile_Location="http://quotes.nasdaq.com/quote.dll?page=xml&mode=stock&sy mbol=NETA"; // Functions # StartElement Of Parser function startElement($parser, $name, $attrs=''){ global $map_array, $temp, $current_tag; $current_tag = $name; if ($format = $map_array[$name]){ switch($name){ case 'NASDAQAMEX-DOT-COM': //echo $HTTP_GET_VARS['ticker']; break; default: break; } } } # EndElement Of Parser function endElement($parser, $name, $attrs=''){ global $map_array, $temp, $current_tag; if ($format = $map_array[$name]){ switch($name){ case 'NASDAQAMEX-DOT-COM': return_page($temp); $temp = ''; break; default: break; } } } # Process the Data between XML-Tags function characterData($parser, $data){ global $current_tag, $temp, $catID; switch($current_tag){ case 'ISSUE-NAME': $temp['STOCK_NAME'] = $data; $current_tag = ''; break; case 'LAST-SALE-PRICE': $temp['LAST_SALE'] = $data; $current_tag = ''; break; default: break; } } # Create the XML Parser and set options $type="UTF-8"; $xml_parser = xml_parser_create($type); 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'); /* Open a connection through Proxy with Nasdaq and start parsing */ $sockPointer = fsockopen($proxy_ip,$proxy_port, $errNo, $errStr,30); //Connect to Proxy if( !$sockPointer ){ echo "$errStr Proxy not Available \n\n"; exit(); } else{ fputs($sockPointer,"GET $xmlFile_Location/ <?xml version=\"1.0\" ?>\n\n"); while (!feof($sockPointer)){ $Data = fgets($sockPointer, 100000); $tag= "<?xml version=\"1.0\" ?>\n\n"; if( eregi("xml version",$Data) ){ $Parse=1; } if($Parse==1){ if (!($Data = utf8_encode($Data))){ echo 'ERROR'."\n"; } if (!xml_parse($xml_parser, $Data, feof($sockPointer))){ die(sprintf( "XML error: %s at line %d\n\n", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser))); } } } fclose($sockPointer); } xml_parser_free($xml_parser); ?> -- PHP General Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED] -- PHP Install Mailing List (http://www.php.net/) To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]