2010-12-28 9 views
20

Cuando uso el código siguiente y analizo el xml localmente funciona bien, pero cuando carga el mismo script en el servidor, muestra un error.Error en la línea 2 en la columna 1: Contenido adicional al final del documento

Nota: Recuperé $lng y $lat de la cadena de consulta y funciona perfectamente localmente.

$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; 

En el servidor arroja este error. Y el documento también está vacía .....

Esta página contiene los siguientes errores:
error en la línea 2 en la columna 1: contenido extra al final del documento A continuación se muestra una representación de la página hasta el primer error

+0

¿Qué idioma es este? –

+0

este código es de lenguaje PHP – hunter

Respuesta

3

En cada bucle del conjunto de resultados, estás añadiendo un nuevo elemento raíz del documento, la creación de un documento XML como esto:

<?xml version="1.0"?> 
<mycatch>...</mycatch> 
<mycatch>...</mycatch> 
... 

Un documento XML sólo puede tener un elemento raíz, por eso el error indica que hay "contenido adicional". Crear un único elemento raíz y añadir todos los elementos mycatch a que:

$root = $dom->createElement("root"); 
$dom->appendChild($root); 
// ... 
while ($row = @mysql_fetch_assoc($result)){ 
    $node = $dom->createElement("mycatch"); 
    $root->appendChild($node); 
38

Creo que va a crear un documento que tiene este aspecto:

<mycatch> 
    .... 
</mycatch> 
<mycatch> 
    .... 
</mycatch> 

Esto no es un documento XML válido, ya que tiene más de un elemento raíz Debe tener un único elemento de nivel superior, como en

<mydocument>  
    <mycatch> 
     .... 
    </mycatch> 
    <mycatch> 
     .... 
    </mycatch> 
    .... 
</mydocument> 
+2

Excelente comentario. ¿Cómo TF Olvidé esto? :( – ilight

+0

Eres genio. – ViruMax

3

Es posible que tenga salida (tal vez la salida de error/depuración) que precede a su llamada a

header("Content-type: text/xml"); 

Por lo tanto, el contenido de ser entregado a la el navegador no es "xml" ... eso es lo que el mensaje de error intenta decirle (al menos ese fue el caso para mí y tuve el mismo mensaje de error que usted describió).

5

El problema es la cadena de conexión de base de datos, uno de su parámetro de la función de conexión de base de datos MySQL no es correcto, por lo que no es un mensaje de error en la salida del navegador, simplemente haga clic derecho página web de salida y la vista de código fuente HTML que verá línea de error seguido por datos correctos de salida XML (archivo). Tuve el mismo problema y la solución anterior funcionó perfectamente.

Cuestiones relacionadas