Ошибка анализа XML-кода – дополнительный контент в конце документа

Я пытаюсь дать возможность получить ответ JSON или XML.

JSON отлично работает, но когда я просматриваю XML, я получаю сообщение об ошибке.

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

Я не уверен, что происходит не так. Я искал, и единственное, что я вижу, это убедиться, что у меня нет лишних пробелов или даже пробелов в именах элементов, которых у меня нет.

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

Любая помощь приветствуется!

Related of "Ошибка анализа XML-кода – дополнительный контент в конце документа"

XML может иметь только один «объект документа» или «корень», вы пытаетесь использовать два ( status и format ). Оберните два элемента в одном, чтобы ваш XML-документ имел только один корневой элемент.

Плохо

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

Хорошо

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

Удостоверьтесь, что вы также втройне проверяете двойную декларацию urlset в верхней части документа. Это была моя проблема. Это был очень неосторожный надзор.

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