Output raw XML using php
I want to output raw xml in a manner similar to http://www.google.com/ig/api?weather=Mountain+View but using PHP.
I have a very simple php script on my webserver:
<?php
$output = "<root><name>sample_name</name></root>";
print ($output);
?>
All I can se开发者_Python百科e in Chrome/firefox is "sample_name". I want to see:
<root>
<name>sample_name</name>
</root>
I cannot find a tutorial for anything THIS simple.
Thanks
By default PHP sets the Content-Type to text/html, so the browsers are displaying your XML document as an HTML page.
For the browser to treat the document as XML you have to set the content-type:
header('Content-Type: text/xml');
Do this before printing anything in your script.
<?php
header('Content-Type: application/xml');
$output = "<root><name>sample_name</name></root>";
print ($output);
?>
You only see "sample_name" because you didn't specify that your output is XML and the browser thinks it's HTML so your XML-Elements are interpreted as HTML-Elements.
To see the raw XML, you need to tell the browser that you're actually sending XML by sending the correct content-type in the HTTP header:
header('Content-Type: application/xml');
This needs to be send (put in the code) before you put out anything else.
For completeness sake, as nobody's mentioned it yet, you can also output raw XML within an HTML page, by escaping <
as <
, >
as >
, and &
as &
. To do that, use the awkwardly named htmlspecialchars
function.
Often, you'll also want to preserve whitespace in the argument, which can be done by surrounding it in <pre>
tags. So a common line for debugging or including a sample is this:
echo '<pre>' . htmlspecialchars($raw_xml) . '</pre>';
Just press Ctrl+U (Control+U), Your browser will display the page's raw source code under a new Tab, be it XML or HTML or whatever else...
精彩评论