2012-02-19 10 views
0

スクリプトでエラーが発生したときにXML応答が生成されますが、XML応答には「文書の先頭にXML宣言のみが許可されています。私が行った研究から、これは開かれているXML宣言の前に空白があることが原因です。 (これは私のXMLレスポンスの正確なものです)XMLの開始時の空白がエラーを引き起こしています

<?xml version="1.0" charset="utf-8"?> 
<conv> 
    <error code="1000">Required parameter is missing</error> 
</conv> 

私はこの問題の原因を見つけることができません?応答を生成するコードは次のとおりです。

function result($data,$errnum,$type='XML') { 
    switch(strtolower($type)) {  
     case 'xml': 

      // Build the XML body 
      header('Content-Type: text/xml');    
      $xmlpage = "<?xml version=\"1.0\" charset=\"utf-8\"?>\n"; 
      $xmlpage .= "<conv>\n"; 
      $xmlpage .= "\t<error code=\"$errnum\">$data</error>\n"; 
      $xmlpage .= '</conv>'; 

      echo $xmlpage;    
     break; 
    } 
    exit; 
} 

アイデアをお持ちですか?

編集 -

私は空白除去ツールを使用してページを実行し、それが起動時に空白を削除しましたが、私は今、新しいエラーを取得しています:

<?php 
function error($errnum=1000) { 
$data = array(
'1000' => 'Required parameter is missing', 
'1100' => 'Parameter not recognized', 
'2000' => 'Currency type not recognized', 
'2100' => 'Currency amount must be to 2 decimal places', 
'2200' => 'Currencies cannot be the same', 
'3000' => 'Service currently unavailable', 
'3100' => 'Error in service' 
); 
result($data[$errnum], $errnum); 
} 
function result($data,$errnum,$type='XML') { 
switch(strtolower($type)) { 
case 'xml': 
// Build the XML body 
header('Content-Type: text/xml'); 
$xmlpage = "<?xml version=\"1.0\" charset=\"utf-8\"?>\n"; 
$xmlpage .= "<conv>\n"; 
$xmlpage .= "\t<error code=\"$errnum\">$data</error>\n"; 
$xmlpage .= '</conv>'; 
echo $xmlpage; 
break; 
} 
exit; 
} 
?> 

エラー:エラー1行目の19行目:XML宣言の解析: '?>'予期される

編集2:文字セットの削除\ utf-8 \が修正されますが、問題?

+0

スクリプトには空白がありますか? '<?php'の前に? – thetaiko

+0

オープニング '<?php'タグの前に' .php'ファイルに空白や改行がありませんか? – jensgram

+0

スクリプトによって使用されている任意のファイル内のタグの前後に空白がある可能性があります。 PHPファイルの末尾にある?>タグを省略することができます – Vitamin

答えて

0

解決済み!

私は空白を削除するには、このツールを使用し: http://www.design215.com/toolbox/whitespace.php

私はまた、「エンコード」されている必要があり、私のXML宣言に設定されている「文字セット」を持っていました。 EG:

<?xml version="1.0" encoding="utf-8"?> 
<conv> 
    <error code="1000">Required parameter is missing</error> 
</conv> 
0

ファイルのエンコードをチェックします。あなたがUTF-8を使用しているかどうか確認してください。これはBOMなしです。

+0

はUTF8にエンコードを変更しましたが、恐怖を助けませんでした。 – tctc91

+0

出力バッファリング(http://www.php.net/manual/ru/ref.outcontrol.php) – Electronick

+0

を試してみましたが、運がまだありません:(。空白を取り除くことができたので私のOPをチェックしてください。今私は新しいエラーがあります。 – tctc91

関連する問題