"XML Parsing Error: junk after document element"

13,601

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.

Share:
13,601
I2Believe
Author by

I2Believe

Updated on June 05, 2022

Comments

  • I2Believe
    I2Believe almost 2 years

    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.