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]

Reply via email to