“XML Parsing Error: junk after document element” [

2019-01-28 21:40发布

问题:

Hey everyone I'm trying to display a Google map with dynamic locations retrieve from database I was following developers.google.com/maps/articles on phpsqlajax_v3.I created the database and the table looks like this

trnsportpublic table

transportpublicid int 11 AUTOINCREMENT

transportType varchar 60

costPerKm decimal(7,2)

address varchar 800

teleNo int 10

webLink varchar 300

description varchar 800

lat double(10,6)

lng double(10,6)


GenerateXml.php

 <?php

          require("db_connection.php");


          function parseToXML($htmlStr) 
          { 
              $xmlStr=str_replace('<','&lt;',$htmlStr); 
              $xmlStr=str_replace('>','&gt;',$xmlStr); 
              $xmlStr=str_replace('"','&quot;',$xmlStr); 
              $xmlStr=str_replace("'",'&#39;',$xmlStr); // line 11  
              $xmlStr=str_replace("&",'&amp;',$xmlStr); 
              return $xmlStr; 
          } 

          // Select all the rows in the markers table
          $query = "SELECT transportType,costPerKm,address,teleNo,webLink,lat,lng FROM transportpublic";

          $result = mysql_query($query);
          if (!$result) 
          {
            die('Invalid query: ' . mysql_error());
          }

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

          // Start XML file, echo parent node
          echo '<transportpublic>';

          // Iterate through the rows, printing XML nodes for each
          while ($row = mysql_fetch_assoc($result)){
            // ADD TO XML DOCUMENT NODE
            echo '<marker ';
            echo 'transportType="' . parseToXML($row['transportType']) . '" ';
            echo 'costPerKm="' . $row['costPerKm'] . '" ';
            echo 'address="' . parseToXML($row['address']) . '" ';
            echo 'teleNo="' . $row['teleNo'] . '" ';
            echo 'webLink="' . parseToXML($row['webLink']) . '" ';
            echo 'lat="' . $row['lat'] . '" ';
            echo 'lng="' . $row['lng'] . '" ';
            echo '/>';
          }

          // End XML file
          echo '</transportpublic>';
    ?>

When I run GenerateXml.php on browser is gives me fillowing

XML Parsing Error: junk after document element
Location: http://localhost:8080/testserver/generateXml.php
Line Number 11, Column 8:
</html>
<transportpublic>
<marker transportType="Bus" costPerKm="1.50" address="abc" teleNo="112554476" webLink="http://www.abc.html" lat="0.000000" lng="0.000000" />

<marker transportType="Train" costPerKm="12.00" address="abc" teleNo="118745963" webLink="http://www.abc.html" lat="0.000000" lng="0.000000" />

<marker transportType="hmmmm" costPerKm="40.00" address="abc" teleNo="112541254" webLink="http://www.abc.html" lat="-33.005985" lng="-58.501824" />

<marker transportType="test" costPerKm="2.00" address="abc" teleNo="112541258" webLink="http://www.abc.html" lat="39.785999" lng="-75.041976" />

<marker transportType="test2" costPerKm="2.00" address="abc" teleNo="112541254" webLink="http://www.abc.html" lat="6.901698" lng="79.853854" />

</transportpublic>
-------^ 

I only got to know that after the root element I shouldn't be parsing any data it'll be taken as junk but in my GenerateXml.php i don't do anything after this line

echo '</transportpublic>';

help me please.

回答1:

The root node is <transportpublic> but the error message shows a bogus </html> close tag right before it. The XML parser probably thinks that <html> is the root node, thus the rest of the XML is the junk after document element mentioned by the error.