当我使用下面的代码并在本地解析xml时它可以正常工作但是当在服务器上传相同的脚本时它会显示错误。
注意:我从查询字符串中检索了$lng
和$lat
,它在本地工作正常。
$lng=$_GET['lng'];
$lat=$_GET['lat'];
$conn=new LoginSystem();
$conn->connect();
$dom = new DOMDocument("1.0");
$query="select catch_id,catch_details,image from mycatch where longitude='$lng' AND latitude='$lat'";
$result = mysql_query($query);
if (!$result) {
die("Invalid query: " . mysql_error());
}
header("Content-type: text/xml");
// Iterate through the rows, adding XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
$node = $dom->createElement("mycatch");
$node = $dom->appendChild($node);
foreach ($row as $fieldname => $fieldvalue) {
$child = $dom->createElement($fieldname);
$child = $node->appendChild($child);
$value = $dom->createTextNode($fieldvalue);
$value = $child->appendChild($value);
}
}
$conn->disconnect();
$xml_string = $dom->saveXML();
echo $xml_string;
在服务器上它会抛出此错误。文件也是空的......
此页面包含以下错误:
第1行第2行的错误:文档末尾的额外内容 下面是第一个错误的页面呈现。
答案 0 :(得分:42)
我认为您正在创建一个如下所示的文档:
<mycatch>
....
</mycatch>
<mycatch>
....
</mycatch>
这不是有效的XML文档,因为它有多个根元素。您必须拥有单个顶级元素,如
<mydocument>
<mycatch>
....
</mycatch>
<mycatch>
....
</mycatch>
....
</mydocument>
答案 1 :(得分:6)
问题是数据库连接字符串,你的一个MySQL数据库连接函数参数不正确,所以浏览器输出中有一条错误信息,只需右键单击输出网页并查看html源代码,你会看到错误行后跟正确的XML输出数据(文件)。 我有同样的问题,上面的解决方案完美无缺。
答案 2 :(得分:3)
在结果集的每个循环上,您将新的根元素附加到文档,创建如下的XML文档:
<?xml version="1.0"?>
<mycatch>...</mycatch>
<mycatch>...</mycatch>
...
XML文档只能有一个根元素,这就是错误说明存在“额外内容”的原因。创建一个根元素并将所有mycatch元素添加到:
$root = $dom->createElement("root");
$dom->appendChild($root);
// ...
while ($row = @mysql_fetch_assoc($result)){
$node = $dom->createElement("mycatch");
$root->appendChild($node);
答案 3 :(得分:3)
您可能在调用
之前输出(可能是错误/调试输出)header("Content-type: text/xml");
因此,传递给浏览器的内容不是“xml”......这就是错误消息试图告诉你的内容(至少对我来说就是这种情况,我有同样的错误信息)描述)。