Подтвердить что ты не робот

Ошибка в строке 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: дополнительный контент в конце документа Ниже представлена ​​рендеринг страницы до первой ошибки.

4b9b3361

Ответ 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"... тем, что сообщение об ошибке пытается сказать вам (по крайней мере, это было для меня, и у меня было такое же сообщение об ошибке, что и вы описано).