我收到一个我认为非常具体的错误。
此PHP存储在我的域中。它访问带有mysql数据库的服务器,并使用它的表信息生成带有标记的XML,然后在Google Map中使用。
实际上它正在工作,因为它正在检索标记,但是这个错误并没有消失,我不知道是什么导致它。我对所有的php和android编程都很新。如果有人能够通过简单的解释为我澄清这一点,我会很高兴。
错误是:
This page contains the following errors:
error on line 3 at column 1: Extra content at the end of the document
Below is a rendering of the page up to the first error.
然后它呈现我的预期结果。我想解决并理解为什么会发生这种情况。
你去我的PHP代码。我从教程(https://developers.google.com/maps/articles/phpsqlajax_v3)得到了:
<?php
require("db_config.php");
function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','<',$htmlStr);
$xmlStr=str_replace('>','>',$xmlStr);
$xmlStr=str_replace('"','"',$xmlStr);
$xmlStr=str_replace("'",''',$xmlStr);
$xmlStr=str_replace("&",'&',$xmlStr);
return $xmlStr;
}
// Opens a connection to a MySQL server
$connection=mysql_connect ($mysql_host, $mysql_user, $mysql_password);
if (!$connection) { die('Not connected : ' . mysql_error());}
// Set the active MySQL database
$db_selected = mysql_select_db($mysql_database, $connection);
if (!$db_selected) {
die ('Can\'t use db : ' . mysql_error());
}
// Select all the rows in the markers table
$query = "SELECT * FROM Estac WHERE 1";
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
header("Content-type: text/xml");
// Start XML file, echo parent node
echo '<markers>';
// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
// ADD TO XML DOCUMENT NODE
echo '<marker>';
echo 'Name="' . parseToXML($row['Name']) . '" ';
echo 'Address="' . parseToXML($row['Address']) . '" ';
echo 'Tel="' . parseToXML($row['Tel']) . '" ';
echo 'Lat="' . $row['Lat'] . '" ';
echo 'Lng="' . $row['Lng'] . '" ';
echo 'Price="' . $row['Price'] . '" ';
echo '</marker>';
}
// End XML file
echo '</markers>';
?>
非常感谢!
答案 0 :(得分:4)
只需右键单击输出错误网页并查看源代码,您将在PHP文件中看到正确的错误消息和行号。您将在几秒钟内解决该错误。
答案 1 :(得分:3)
“文档末尾的额外内容”
我想解决并理解为什么会这样。
为什么会这样?这简直就是一个无效的XML。请参阅以下示例:
<xml>
</xml>
This here is extra content at the end of the document
如您所见,通常没有人会创建这样的XML文件。在你的情况下,这是因为那些程序员的常见事故,他们自己编写函数来输出XML而这些函数已经存在。然后他们忘记正确输出xml ,然后他们被搞砸了:
$xml = new SimpleXMLElement('<markers/>');
foreach ($databaseResult as $row)
{
$marker = $xml->addChild('marker');
foreach ($row as $key => $value)
{
$marker[$key] = $value;
}
}
header("Content-type: text/xml");
$xml->asXML('php://output');
此示例使用SimpleXML library。如果您的数据库结果非常大并且您希望改为流式传输数据,则可以查看XMLWriter library:
$writer = new XMLWriter();
$writer->openUri('php://output');
$writer->startDocument();
$writer->startElement('markers');
header("Content-type: text/xml");
foreach ($databaseResult as $row)
{
$writer->writeRaw("\n ");
$writer->flush();
$writer->startElement('marker');
foreach ($row as $key => $value)
{
$writer->writeAttribute($key, $value);
}
$writer->endElement();
}
$writer->writeRaw("\n");
$writer->endElement();
$writer->flush();
答案 2 :(得分:0)
我遇到了同样的问题并且放了&#39; &#39;在数据库周围,它工作。