2013-06-06 21 views
12

JSON veya XML yanıtı alma seçeneği sunmaya çalışıyorum.XML Ayrıştırma Hatası - Belgenin sonundaki fazladan içerik

JSON iyi çalışıyor, ancak XML'i görüntülediğimde bir hata alıyorum. http://lmsapi.com/?api_key=fba9e59d7af86b239e82581780ff987e&format=xml

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

yanlış neler olduğunu emin değilim. Arama yaptım ve gördüğüm tek şey, fazladan boşluklarımın olmadığından emin olmam, ya da benim eleman isimlerimde bile boşlukları olmadığından emin olmam.

index.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'}); 
} 
?> 

<?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 Herhangi bir yardım çok takdir!

+2

[sütun 1 satır 2 hata: belgenin sonunda ilave içerik] olası çift (http://stackoverflow.com/questions/4544272/error-on-line-2-at- sütun-1-extra-content-in-the-end-of-the-belge) – kenorb

cevap

48

XML, yalnızca bir "belge varlığı" veya "kök" sahibi olabilir, iki (status ve format) kullanmaya çalışıyorsunuz. İki öğenizi tek bir şekilde sarın, böylece XML belgenizin yalnızca bir kök öğesi vardır.

Kötü

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

İyi

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

im başka bir sorun var geldiğinde başka bir sorun var .. –

+0

Burada başka bir soru oluşturduk http://stackoverflow.com/soru/16973923/XML-ayrıştırma hatası-hata-on-line-1-en-sütun-769 kodlama hatası –

1

belgenizin üst kısmında yinelenen urlset beyanı için emin de üçlü olarak kontrol edin. Bu benim sorunumdu. Çok dikkatsiz bir gözetimdi.

<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">