I have been working on a project that displays data in an XML file. (It’s kind of like an API). I know how to parse XML with PHP, and how to make an XML file in PHP, but they don’t work together. 🙂
Basically, I have two files: parse.php and xml.php.
xml.php grabs info from a MySQL database, and outputs it as XML.
parse.php loads and parses xml.php and outputs it as HTML.
If I run parse.php, it does not load xml.php. However, if I copy the outputted XML (from xml.php) and save it as a xml.xml file (and change the filename in parse.php to ‘xml.xml’) it works. I’d really appreciate any help.
Content of parse.php:
<?php
$doc = "xml.php";
$doc = @simplexml_load_file($doc) or die("Server Error: Recipe not found!");
$title = $doc->title;
echo $title
?>
Content of xml.php:
<?php
header("Content-type: text/xml");
$dbc = mysql... //gets data from database
echo "<!DOCTYPE..."; //xml stuff here
echo "<title>" . $dataFromMySQL . "</title>";
?>
The database connection works, and the DOCTYPE in the XML is ok, so that’s not the problem.
Again, I only get the problem when I generate XML dynamically using PHP. If it’s a .XML file, it works fine.
Can anyone help me?
Thanks.
That is where your problem is. This does not execute
xml.php, but attempts to parse that file — the PHP code that you’ve written — as XML. Obviously (since it isn’t XML) this won’t work.You have to find a way of getting the output from executing
xml.phpintoparse.php.The easy way to do this would be to change all your
echocalls into$xml .=calls, and simplyincludexml.phpintoparse.php.Note that your problem here shows the foolishness of using the error suppression operator
@. If you hadn’t used it, PHP would have shown you various errors which would have helped you to realise what the problem was.Addendum: it occurs to me that the best way actually is to forget about the pointless XML step along the way and just convert the database output into HTML.