电子表格错误“字符串无法解析为 XML”

Spreadsheets error " String could not be parsed as XML"

当我尝试从 Google 驱动器获取电子表格的所有标题时,我收到此消息 The string could not be parsed as XML:

ERROR ->  SimpleXMLElement::__construct(): Entity: line 1: parser error : Start tag expected, '<' not found in C:\....

ERROR-> SimpleXMLElement::__construct(): { in C:\....

ERROR-> SimpleXMLElement::__construct(): ^ in C:\...

我尝试在 Gooogle 驱动器上连接,我成功了,但我需要在 Google 驱动器上获取电子表格的名称,我以前使用 API v3 现在我需要使用 V4。

这是调用方法 getSpreadsheets() 的代码;

$serviceRequest = new DefaultServiceRequest($token->access_token, $token->token_type);
                        ServiceRequestFactory::setInstance($serviceRequest);

$spreadsheetService = new Google\Spreadsheet\SpreadsheetService();
$spreadsheetFeed = $spreadsheetService->getSpreadsheets();

这是方法 getSpreadsheets 的代码:

public function getSpreadsheets()
    {
        return new SpreadsheetFeed(
             

           ServiceRequestFactory::getInstance()->get('v4/spreadsheets/1u7WYzJOYMX7uH3AIM70yVLOaHBy8p_uifuJe_Saa2T4?fields=sheets.properties.title')
        
        
        );
    }


这是 SpreadsheetFeed class,错误原因是:

namespace Google\Spreadsheet;

use ArrayIterator;
use SimpleXMLElement;

/**
 * Spreadsheet feed. 
 *
 * @package    Google
 * @subpackage Spreadsheet
 * @author     Asim Liaquat <asimlqt22@gmail.com>
 */
class SpreadsheetFeed extends ArrayIterator
{
    /**
     * The spreadsheet feed xml object
     * 
     * @var \SimpleXMLElement
     */
    protected $xml;

    /**
     * Initializes the the spreadsheet feed object
     * 
     * @param string $xml the raw xml string of a spreadsheet feed
     */
    public function __construct($xml)
    {
        $this->xml = new SimpleXMLElement($xml);

        $spreadsheets = array();
        foreach ($this->xml->entry as $entry) {
            $spreadsheets[] = new Spreadsheet($entry);
        }
        parent::__construct($spreadsheets);
    }

    /**
     * Gets a spreadhseet from the feed by its title. i.e. the name of 
     * the spreadsheet in google drive. This method will return only the
     * first spreadsheet found with the specified title.
     * 
     * @param string $title
     * 
     * @return \Google\Spreadsheet\Spreadsheet|null
     */
    public function getByTitle($title)
    {
        foreach($this->xml->entry as $entry) {
            if($entry->title->__toString() == $title) {
                return new Spreadsheet($entry);
            }
        }
        return null;
    }

}

我试图找到解决这个错误的方法! 任何帮助,如何解决此错误? 谢谢!

这是我的应用程序的解决方案,从 v3 迁移到 v4 电子表格API:

$this->service_drive = new Google_Service_Drive($this->client);
                $optParams = array('q'=> 'mimeType="application/vnd.google-apps.spreadsheet"');
                $this->files = $this->service_drive->files->listFiles($optParams);
            }
                 // $this->service_drive = new Google_Service_Drive($this->client);

                  //$optParams = array('q'=> 'mimeType="application/vnd.google-apps.spreadsheet"');
                  //$this->files = $this->service_drive->files->listFiles($optParams);
                  //$gdata_spreadsheets=$this->files;//my test
                  if($this->files !==null){
                   if (count($this->files->getFiles()) == 0) {
                  $gdata_spreadsheets=array("No Spreadsheets");
                  } else {
                  foreach ($this->files->getFiles() as $file) {
                   $gdata_spreadsheets[$file->getId()]=$file->getName();
                  } 
                } 
        }
            //trenuto ispod code rjesavam
            if($gdata->spreadsheet_id != '' && isset( $gdata_spreadsheets[$gdata->spreadsheet_id] ) && $this->files !== null){

            $this->service = new Google_Service_Sheets($this->client);
            $this->response = $this->service->spreadsheets->get($gdata->spreadsheet_id);
            $this->sheets=$this->response->getSheets();
             
            // $spreadsheet = $this->service_drive($gdata_spreadsheets[$gdata->spreadsheet_id]);
              // $worksheetFeed = $spreadsheet->getWorksheets();
                
                foreach ( $this->sheets as $sheet ){
                   $gdata_worksheets[$sheet->properties->sheetId]= $sheet->properties->title;
                    //$gdata_worksheets[]=$this->sheets;
                }
               //$gdata_worksheets[]=$gdata->worksheet_id;
                if($gdata->worksheet_id != '' && isset( $gdata_worksheets[$gdata->worksheet_id] )){
                    $range = 'List 2!A1:Z';
                    $worksheet =  $this->service->spreadsheets_values->get($gdata->spreadsheet_id, $range);
                   $cellFeed = $worksheet->getValues();

                    foreach( $cellFeed  As $row) {
                       
                       //$row = $cellEntry->getRow();
                        //$col = $cellEntry;
                       // $gdata_worksheets=$this->service;
                        
                    
                       if( $row > 1 ){
                    $gdata_columns=$row;
                           break;
                            
                       }
                   }
                }
            }
            
       
        } catch(Exception $e){
            
            $error = $e->getMessage();
        }

这是我的代码的一部分,其中描述了如何将电子表格从 v3 迁移到 v4 API。