php, xml, ups nakliye: "XSL kullanarak XML girişini görüntülemek olamaz ..."

2 Cevap php

Hey, ben this function kullanarak nakliye hesap makinesi dağıtma, ve ben IE kullanmak yalnızca ben bu hatayı alıyorum. Firefox nakliye hesap makinesi ile sadece iyi yapar. Ben bu hata ile yabancı değilim, ve google arama bu xml biçiminde bir sorun olduğunu söyle. Sorun: UPS kargo hesaplama sunucudan XML yanıtı bu içeriğe sahip olmamalıdır. So, my question is: where do you think the bug is? I appreciate answers and suggestions of where to check. Ben bir boş çiziyorum.

Hata IE (VRS 8 7 ve 6.) Kullanırken:

The XML page cannot be displayed Cannot view XML input using XSL style sheet. Please correct the error and then click the Refresh button, or try again later.


Incorrect syntax was used in a comment. Error processing resource 'http://mgxvideo.com/mgxcopy-alpha-3/shopping/cart_displa...

<!------------------- main content ------------------------->

---------- ^

Sunucudan istekte php kod kısmı:

$ch = curl_init("https://www.ups.com/ups.app/xml/Rate");
        curl_setopt($ch, CURLOPT_HEADER, 1);
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_TIMEOUT, 90);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
        $result=curl_exec ($ch);
    echo '<!-- '. $result. ' -->'; // THIS LINE IS FOR DEBUG PURPOSES ONLY-IT WILL SHOW IN HTML COMMENTS
        $data = strstr($result, '<?');
        $xml_parser = xml_parser_create();
        xml_parse_into_struct($xml_parser, $data, $vals, $index);
        xml_parser_free($xml_parser);
        $params = array();
        $level = array();
        foreach ($vals as $xml_elem) {
         if ($xml_elem['type'] == 'open') {
        if (array_key_exists('attributes',$xml_elem)) {
        	 list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
        } else {
        	 $level[$xml_elem['level']] = $xml_elem['tag'];
        }
         }
         if ($xml_elem['type'] == 'complete') {
        $start_level = 1;
        $php_stmt = '$params';
        while($start_level < $xml_elem['level']) {
        	 $php_stmt .= '[$level['.$start_level.']]';
        	 $start_level++;
        }
        $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
        eval($php_stmt);
         }
        }
        curl_close($ch);
    	#print_r($params);
    	#echo "<br/><br/>";
        return $params['RATINGSERVICESELECTIONRESPONSE']['RATEDSHIPMENT']['TOTALCHARGES']['MONETARYVALUE'];

Ve burada Firefox xml isteği (yukarıdaki kodu, bu "BU HATTI DEBUG amaçlıdır" diyor çizgi gelen sonucunda yankıları ne:

<!-- HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Date: Fri, 26 Jun 2009 21:58:04 GMT
Server: Apache
Pragma: no-cache
Content-Length: 1524
Content-Type: application/xml

<?xml version="1.0"?><RatingServiceSelectionResponse><Response><TransactionReference><CustomerContext>Bare Bones Rate Request</CustomerContext><XpciVersion>1.0</XpciVersion></TransactionReference><ResponseStatusCode>1</ResponseStatusCode><ResponseStatusDescription>Success</ResponseStatusDescription></Response><RatedShipment><Service><Code>02</Code></Service><RatedShipmentWarning>Your invoice may vary from the displayed reference rates</RatedShipmentWarning><BillingWeight><UnitOfMeasurement><Code>LBS</Code></UnitOfMeasurement><Weight>6.0</Weight></BillingWeight><TransportationCharges><CurrencyCode>USD</CurrencyCode><MonetaryValue>14.34</MonetaryValue></TransportationCharges><ServiceOptionsCharges><CurrencyCode>USD</CurrencyCode><MonetaryValue>0.00</MonetaryValue></ServiceOptionsCharges><TotalCharges><CurrencyCode>USD</CurrencyCode><MonetaryValue>14.34</MonetaryValue></TotalCharges><GuaranteedDaysToDelivery>2</GuaranteedDaysToDelivery><ScheduledDeliveryTime></ScheduledDeliveryTime><RatedPackage><TransportationCharges><CurrencyCode>USD</CurrencyCode><MonetaryValue>14.34</MonetaryValue></TransportationCharges><ServiceOptionsCharges><CurrencyCode>USD</CurrencyCode><MonetaryValue>0.00</MonetaryValue></ServiceOptionsCharges><TotalCharges><CurrencyCode>USD</CurrencyCode><MonetaryValue>14.34</MonetaryValue></TotalCharges><Weight>6.0</Weight><BillingWeight><UnitOfMeasurement><Code>LBS</Code></UnitOfMeasurement><Weight>6.0</Weight></BillingWeight></RatedPackage></RatedShipment></RatingServiceSelectionResponse> -->

Fikirler?

2 Cevap

XML yorumların içinde - 'Teknik olarak, olamaz. Yani değiştirmeniz gerekir:

<!------------------- main content ------------------------->

karşı

<!--                  main content                     -->

...or something similar. If UPS is sending it. You can replace it before you forward it karşı the browser.

DÜZENLEME

Regarding displaying the markup rather than rendered HTML: If you're seeing the same thing as in Firefox (<RatingServiceSelectionResponse, etc.) that's not HTML--it's XML. You'll either want karşı transform it with XSLT or use XPath (or XQuery, etc.) karşı fetch particular values out of it. Looks like you could also use the $myRate->getRate() function from ups-php API you referenced.

Sorun kötü html biçimlendirme oldu. Ben bütün yorumlar silinmiş, ve nedense şimdi daha iyi çalışıyor.