Ошибка в строке 2 в столбце 1: дополнительный контент в конце документа
Когда я использую приведенный ниже код и разбираю xml локально, он отлично работает, но при загрузке того же script на сервере он показывает ошибку.
Примечание. Я извлек $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;
На сервере он выдает эту ошибку. И документ также пуст.....
Эта страница содержит следующие ошибки:
ошибка в строке 2 в столбце 1: дополнительный контент в конце документа Ниже представлена рендеринг страницы до первой ошибки.
Ответы
Ответ 1
Я думаю, вы создаете документ, который выглядит так:
<mycatch>
....
</mycatch>
<mycatch>
....
</mycatch>
Это недействительный XML-документ, так как он содержит более одного корневого элемента. У вас должен быть один элемент верхнего уровня, как в
<mydocument>
<mycatch>
....
</mycatch>
<mycatch>
....
</mycatch>
....
</mydocument>
Ответ 2
Проблема связана с строкой подключения к базе данных, один из параметров функции подключения к базе данных MySQL неверен, поэтому в выводе браузера есть сообщение об ошибке. Просто щелкните страницу вывода правой кнопкой мыши и просмотрите исходный код html. правильные выходные данные XML (файл).
У меня была та же проблема, и вышеописанное решение работало отлично.
Ответ 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);
Ответ 4
У вас может быть выход (возможно, вывод ошибки/отладки), который предшествует вашему вызову
header("Content-type: text/xml");
Следовательно, контент, который доставляется в браузер, не является "xml"... тем, что сообщение об ошибке пытается сказать вам (по крайней мере, это было для меня, и у меня было такое же сообщение об ошибке, что и вы описано).