Pheap
Pheap

Reputation: 2379

My PHP code to produce XML document is not working right

I want to create/produce XML document from PHP, but not working.

I have this code right here:

<?php
    $xml = new SimpleXMLElement("<evalues></evalues>");
    while ($row = mysqli_fetch_array($result)){     
        $evalue = $xml->addChild('evalue', $row[1]);
        $evalue->addAttribute('id', $row[0]);            
    }
    echo $xml->saveXML();
?>

the result looks like this, in one long line

1513971901.549931756795512.970022842372553.270163414774046.390384216874570.370032821081734.920144539784.98

The source code looks like this, which is correct, but I want it to look like below in the browser as an XML document without having to view the source code.

<?xml version="1.0"?>
<evalues>
    <evalue id="5">1513971901.54993</evalue>
    <evalue id="6">1756795512.97002</evalue>
    <evalue id="7">2842372553.27016</evalue>
    <evalue id="8">3414774046.39038</evalue>
    <evalue id="9">4216874570.37003</evalue>
    <evalue id="10">2821081734.92014</evalue>
    <evalue id="11">4539784.98</evalue>
</evalues>

Right now when i right click on the page and click Save Page As, it shows .htm at the end BUT i want it to show .xml

Upvotes: 0

Views: 144

Answers (3)

Phil
Phil

Reputation: 164768

If you don't want to actually use the XML (just display it), change your last line to

echo '<pre>', htmlspecialchars($xml->saveXML()), '</pre>';

Upvotes: 0

Alex Jose
Alex Jose

Reputation: 464

You should set the header content type to text/xml so that the browser could identify that the document is an xml document.

header('Content-Type: text/xml');

You should put this code before anything is outputted to the document. That is before any echo of print statement. In this case you case put the code before the loop.

Since there is no stylesheet attached to your xml document Internet Explorer may still display it as a plain text file. You can see the document as it is using Mozilla Firefox.

Upvotes: 1

zerkms
zerkms

Reputation: 254916

Just give your client a proper content type:

header('Content-Type: text/xml');

Upvotes: 3

Related Questions