スクリプトでエラーが発生したときに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 \が修正されますが、問題?
スクリプトには空白がありますか? '<?php'の前に? – thetaiko
オープニング '<?php'タグの前に' .php'ファイルに空白や改行がありませんか? – jensgram
スクリプトによって使用されている任意のファイル内のタグの前後に空白がある可能性があります。 PHPファイルの末尾にある?>タグを省略することができます – Vitamin