"XML Parsing Error: junk after document element"

google-maps-api-3, php, xml-parsing

Solution

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.

Problem

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.

Original source