web-dev-qa-db-ja.com

パーサーエラー:開始タグが必要です、 '<'が見つかりません

PHPを初めて使用しています。ebayサンドボックスに画像をアップロードするためにphpサンプルを使用しています。PHPを実行すると、次のエラーが発生します。ファイル:

PHP Warning:  simplexml_load_string(): Entity: line 1: parser error : Start tag expected, '<' not found in /home/nish/stuff/market place/test/php5/UploadImage/UploadSiteHostedPictures.php on line 69
PHP Warning:  simplexml_load_string(): HTTP/1.1 200 OK in /home/nish/stuff/market place/test/php5/UploadImage/UploadSiteHostedPictures.php on line 69
PHP Warning:  simplexml_load_string(): ^ in /home/nish/stuff/market place/test/php5/UploadImage/UploadSiteHostedPictures.php on line 69
PHP Notice:  Trying to get property of non-object in /home/nish/stuff/market place/test/php5/UploadImage/UploadSiteHostedPictures.php on line 92
PHP Notice:  Trying to get property of non-object in /home/nish/stuff/market place/test/php5/UploadImage/UploadSiteHostedPictures.php on line 93
PHP Notice:  Trying to get property of non-object in /home/nish/stuff/market place/test/php5/UploadImage/UploadSiteHostedPictures.php on line 93
PHP Notice:  Trying to get property of non-object in /home/nish/stuff/market place/test/php5/UploadImage/UploadSiteHostedPictures.php on line 94
PHP Notice:  Trying to get property of non-object in /home/nish/stuff/market place/test/php5/UploadImage/UploadSiteHostedPictures.php on line 94

関連する行は次のとおりです。

69. $respXmlObj = simplexml_load_string($respXmlStr);     // create SimpleXML object from string for easier parsing
                                                      // need SimpleXML library loaded for this

92. $ack        = $respXmlObj->Ack;
93. $picNameOut = $respXmlObj->SiteHostedPictureDetails->PictureName;
94. $picURL     = $respXmlObj->SiteHostedPictureDetails->FullURL;

私が理解できることは、respXMLObjが正しく設定されていないことです。 simleXMLサポートが有効になっていることを確認しました。

誰かがこれをデバッグするのを手伝ってくれませんか?ありがとう

6
nish

参照するコードには次の行があります。

//curl_setopt($connection, CURLOPT_HEADER, 1 ); // Uncomment these for debugging

これらのコメントを外したようです。これにより、応答でHTTPヘッダーが取得されます。デバッグには問題ありませんが、simplexml_load_stringでXML解析エラーが発生します。

再度コメント化するか、値として0を入力します。

11

私の場合。私は、XMLファイルの先頭にある非表示の文字The BOMを削除を削除しました。それを行う方法-テキストエディターによって異なります。

0
Ruslan Novikov

var_dump($respXmlStr);を実行してください。私の推測では、この文字列は有効なXMLではありません。

Simplexml-load-stringのドキュメントに従って、最初のパラメータはA well-formed XML string- http://php.net/manual/en/function.simplexml-load-string.php

0
aland
$hasError = false;

if ( $resp == 'Internal Server Error' || empty($resp) )
{
    $hasError = true;
}

if ( ! $hasError )
{                      
    $aux    = !empty($resp) ? explode('', $resp) : NULL;
    $temp   = utf8_decode(trim($aux[0]));               
    $xml    = simplexml_load_string($temp); 
}
0
Danilo Bruno