parser error : Start tag expected, '<' not found

那年仲夏 提交于 2019-12-12 00:59:24

问题


I am using PHP for the first time. I am using the php sample for uploading image on ebay sandbox. I am getting the following error on running the PHP file:

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

Relevant lines are:

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;

What I can understand is the respXMLObj is not getting set properly. I have checked that simleXML support is enabled.

Could someone please help me debug this. Thanks


回答1:


The code you refer to has this line:

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

it seems like you uncommented these. This will result in getting the HTTP header in your response. Which is OK for debugging, but it will create an XML parse error in simplexml_load_string.

Either comment it out again or put 0 as its value.




回答2:


In my case. I just removed the invisible character The BOM in the beginning of the XML file. How to do it - depends on your text editor.




回答3:


$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); 
}



回答4:


Do a var_dump($respXmlStr); my guess is that this string is not valid XML.

As per the simplexml-load-string documentation, the first parameter is expected to be A well-formed XML string - http://php.net/manual/en/function.simplexml-load-string.php



来源:https://stackoverflow.com/questions/22060990/php-warning-simplexml-load-string-entity-line-1-parser-error-start-tag-e

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!