2013-06-06 18 views
12

Sto tentando di fornire l'opzione per ottenere una risposta JSON o XML.Errore di analisi XML - Contenuto extra alla fine del documento

JSON funziona correttamente ma quando visualizzo XML, viene visualizzato un errore.

http://lmsapi.com/?api_key=fba9e59d7af86b239e82581780ff987e&format=json http://lmsapi.com/?api_key=fba9e59d7af86b239e82581780ff987e&format=xml

io non sono sicuro di quello che sta andando male. Ho cercato e l'unica cosa che vedo è di assicurarmi di non avere spazi bianchi extra o di avere spazi nei nomi dei miei elementi, cosa che non faccio.

index.php

<?php 
require_once('includes/inc.settings.php'); 
if(${'Response'}['format'] == 'json'){ 
    print_r(${'Results'}); 
}elseif(${'Response'}['format'] == 'xml'){ 
    header('Content-type: application/xml'); 
    echo "<?xml version=\"1.0\"?>"; 
    echo ${'Results'}; 
} 
?> 

inc.settings.php

<?php 
// **************************************** 
// Require other includes 
// **************************************** 
    require('Excel/PHPExcel.php'); 
    require('inc.variables.php'); 
    require('inc.functions.php'); 
    require('inc.browser.php'); 
    require('class.phpmailer.php'); 

// **************************************** 
// Initial page setup 
// **************************************** 

    // Set our Error Handling 
    if($debug == true){ 
     error_reporting(E_ALL); 
     ini_set('display_errors', 1); 
    } else { 
     error_reporting(E_ERROR); 
     ini_set('display_errors', 1); 
    } 

    // Set our timeout limit 
    set_time_limit(30); 

    // Set our memory limit 
    ini_set('memory_limit', '128M'); 

    // Start our PHP session 
    session_start(); 

    // Set our charset to UTF-8 
    mb_internal_encoding('UTF-8'); 

    // Get our browser information 
    $browser = new Browser; 

// **************************************** 
// Connect to mySQL 
// **************************************** 
    mysql_connect(MYSQL_HOST.':'.MYSQL_PORT, MYSQL_USER, MYSQL_PASS) or die('Could not establish a connection to the MySQL Engine.'); 
    mysql_select_db(MYSQL_DB) or die('Could not locate the specified database'); 


// **************************************** 
// Sanitize our possible api data 
// **************************************** 

    if(isset($_GET['api_key'])) { ${'API KEY'} = inputCleanSQL($_GET['api_key']); } else { ${'API KEY'} = ''; } 
    if(isset($_GET['format'])){ ${'Format'} = inputCleanSQL($_GET['format']); } else { ${'Format'} = ''; } 
    if(isset($_GET['act'])){ ${'Action'} = inputCleanSQL($_GET['act']); } else { ${'Action'} = ''; } 
    if(isset($_GET['phone_numer'])){ ${'Phone Number'} = inputCleanSQL(removeCHARSphone($_GET['phone_number'])); } else { ${'Phone Number'} = ''; } 
    if(isset($_GET['limit'])){ ${'Limit'} = inputCleanSQL($_GET['limit']); } else { ${'Limit'} = ''; } 

// **************************************** 
// Begin the Response Array 
// **************************************** 

    ${'Response'} = array(); 
    ${'Response'}['status'] = ''; 
    ${'Response'}['reason'] = array(); 
    ${'Format Type'} = true; 

// Check the API Key 
if(isset(${'API KEY'})){ 
    ${'API Key Check'} = mysql_result(mysql_query('SELECT count(0) FROM `api`.`api_keys` WHERE `api_key` = "'.${'API KEY'}.'"'),0); 
    if(!${'API Key Check'}) { 
     ${'Response'}['status'] = 'failed'; 
     ${'Response'}['reason'][] = 'invalid api key'; 
    } else { 
     // Log the API hit 
     mysql_query('INSERT INTO `api`.`api_log` (`api_key`) VALUES ("'.${'API KEY'}.'")'); 

     // Check the format request 
     if(${'Format'} != '' && ${'Format'} != 'json' && ${'Format'} != 'xml'){ 
      ${'Response'}['status'] = 'failed'; 
      ${'Response'}['reason'][] = 'invalid format specified (&format=)'; 
      ${'Format Type'} = false; 
     } 

     // Check the action request 
     if(${'Action'} != '' && ${'Action'} != 'get' && ${'Action'} != 'details'){ 
      ${'Response'}['status'] = 'failed'; 
      ${'Response'}['reason'][] = 'invalid action type (&act=)'; 
     } 

     if(${'Response'}['status'] != 'failed'){ 
      ${'Response'}['status'] = 'success'; 
      unset(${'Response'}['reason']); 
     } 

    } 
} else { 
    ${'Response'}['status'] = 'failed'; 
    ${'Response'}['reason'][] = 'api key required'; 
} 


if(isset(${'Format'}) && ${'Format Type'}){ 
    if(${'Format'} == 'json'){ 
     ${'Response'}['format'] = 'json'; 
     ${'Results'} = json_encode(${'Response'}); 
    } elseif(${'Format'} == 'xml'){ 
     ${'Response'}['format'] = 'xml'; 
     ${'Results'} = arrayToXML(${'Response'}); 
    } 
} else { 
    ${'Response'}['format'] = 'json'; 
    ${'Results'} = json_encode(${'Response'}); 
} 
?> 

Qualsiasi aiuto sarebbe molto apprezzato!

+2

Possibile duplicato di [Errore sulla linea 2 a colonna 1: contenuti extra alla fine del documento] (http://stackoverflow.com/questions/4544272/error-on-line-2-at- column-1-extra-content-at-the-end-of-the-document) – kenorb

risposta

48

XML può avere solo una "entità documento" o "root", si sta tentando di utilizzare due (status e format). Avvolgi i tuoi due elementi in uno solo, in modo che il tuo documento XML abbia solo un elemento radice.

Bad

<?xml version="1.0"?> 
<status>success</status> 
<format>xml</format> 

Buono

<?xml version="1.0"?> 
<response> 
    <status>success</status> 
    <format>xml</format> 
</response> 
+0

ho un altro problema quando si tratta di avere un altro array in là .. –

+0

ho creato un'altra domanda qui http://stackoverflow.com/domande/16973923/xML-parse-error-error-on-line-1-a-colonna-769-codifica-error –

1

assicuratevi di controllare anche tripla per una dichiarazione urlset duplicata nella parte superiore del documento. Questo era il mio problema E 'stata una svista molto spensierata.

<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9" 
url="http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" 
xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> 
Problemi correlati