2009-06-26 24 views
1

this functionを使用して配送計算機を導入していますので、IEを使用している場合にのみこのエラーが発生します。 Firefoxは配送計算機でうまくいく。私はこのエラーに慣れていないし、Googleの検索ではxml形式の問題だと教えてくれる。問題は、UPSの配送計算サーバーからのXMLレスポンスにこのコンテンツが含まれていないことです。 私の質問は、バグはどこだと思いますか?私は、どこでチェックするかの答えと提案を感謝します。私は空白を描いています。php、xml、ups shipping: "XSLを使用してXML入力を表示できません..."バグはどこですか?

エラーIEを使用して(VRS 8. 7、および6):

XMLページは は、XSLスタイルに シートを使用してXML入力を表示することはできません表示することができません。エラーを修正して をクリックし、[更新]ボタンをクリックするか、 をもう一度お試しください。


コメントでは、構文が正しくありませんでした。サーバからの要求PHPコードのエラー処理リソース 「http://mgxvideo.com/mgxcopy-alpha-3/shopping/cart_displa ...

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

----------^

部:

$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']; 

上記のコードでは、「この行はデバッグ目的のみ」という行です:

<!-- 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> --> 

アイデア?

+0

これは、コメントが正しく行われていないという問題があるページでした。 <!-----------------------メインコンテンツ-------------------> は明らかに何らかの形で、すなわち、すなわち、今私の問題は、ページがレンダリングされたhtmlではなくhtmlコードを表示していることです。 – montooner

+0

タイトルに「[解決済み]」を追加する必要はありません。答えのアウトラインのチェックマークをクリックするだけで回答を受け入れることができます(あなた自身の回答かもしれません)。 – VolkerK

答えて

4

技術的には、XMLコメントの中に ' - 'を付けることはできません。だから、変更する必要があります。

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

<!--     main content      --> 

...または類似のものに。 UPSがそれを送信している場合。ブラウザに転送する前に置き換えることができます。マークアップではなく、レンダリングされたHTMLを表示に関して

EDIT

:あなたは(< RatingServiceSelectionResponseなど)のFirefoxと同じものを見ている場合、それはHTMLではない - それはXMLです。 XSLTで変換するか、XPath(またはXQueryなど)を使用して特定の値を取り出します。あなたが参照したups-php APIから$ myRate-> getRate()関数を使うこともできるようです。

+0

srsly?コメントのためのthx。レンダリングされたhtmlは、htmlの構文エラーを罰するie8の方法のようです。構文エラーに達するまで、すべてのコードをレンダリングします。ここで、ハイライト表示され、 "divタグが開始タグと一致しません"と表示されます。その特定のエラーは遅れていた。 wtf brタグは一致しません。 – montooner

1

問題はhtmlフォーマットが不良です。私はすべてのコメントを削除しましたが、何らかの理由で今は良くなっています。

関連する問題