我正在尝试提供获取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'});
}
?>
任何帮助将非常感激!
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>
将数据写入字符串生成器的逻辑,在迭代由于追加(\n)的最后一条记录后,添加了一个我不需要的新空行。
将数据写入字符串生成器的逻辑,在由于append(“\n”)而迭代最后一条记录之后,将添加一个我不需要的新空行。
我试图在Java运行一个程序,它接受一个自定义的XML文件并对其进行解析。我正在使用XML文件进行存储。我在错误日志中得到以下错误。 XML文件的开头包括: 程序能够读入XML文件。我得到了上面的错误。下面是一段代码片段: 在我看来,我的XML文件的prolog中没有无效的内容。我想不出有什么问题。请帮帮忙。多谢了。
使用DOM4J的步骤 以下是使用DOM4J Parser解析文档时使用的步骤。 导入与XML相关的包。 创建一个SAXReader。 从文件或流创建文档。 通过调用document.selectNodes()获取使用XPath Expression获取所需的节点 提取根元素。 迭代节点列表。 检查属性。 检查子元素。 Import XML-related packages import java.
使用XPath的步骤 以下是使用XPath Parser解析文档时使用的步骤。 导入与XML相关的包。 创建一个DocumentBuilder。 从文件或流创建文档。 创建Xpath对象和XPath路径表达式。 使用XPath.compile()编译XPath表达式,并通过XPath.evaluate()评估编译的表达式获取节点列表。 迭代节点列表。 检查属性。 检查子元素。 Import XML
例子 (Demo Example) 这是我们需要解析的输入xml文件 - <?xml version = "1.0"?> <class> <student rollno = "393"> <firstname>dinkar</firstname> <lastname>kad</lastname> <nickname>dinkar</nickname>