PHP
and XML
XML is a markup language that looks a lot like
HTML. An XML document is plain text and contains tags delimited by < and
>.There are two big differences between XML and HTML −
XML gives you a lot more freedom than HTML. HTML
has a certain set of tags: the <a></a> tags surround a link, the
<p> starts paragraph and so on. An XML document, however, can use any
tags you want. Put <rating></rating> tags around a movie rating,
<height></height> tags around someone's height. Thus XML gives you
option to device your own tags.
XML is very strict when it comes to document
structure. HTML lets you play fast and loose with some opening and closing
tags. But this is not the case with XML.
HTML list
that's not valid XML
<ul>
<li>Braised Sea Cucumber
<li>Baked Giblets with Salt
<li>Abalone with Marrow and Duck Feet
</ul>
This is not a valid XML document because there are
no closing </li> tags to match up with the three opening <li> tags.
Every opened tag in an XML document must be closed.
HTML list that
is valid XML
<ul>
<li>Braised Sea Cucumber</li>
<li>Baked Giblets with Salt</li>
<li>Abalone with Marrow and Duck Feet</li>
</ul>
Parsing an XML
Document
PHP 5's new SimpleXML module makes
parsing an XML document, well, simple. It turns an XML document into an object
that provides structured access to the XML.
To create a SimpleXML object from an XML document
stored in a string, pass the string to simplexml_load_string( ). It
returns a SimpleXML object.
Example
Try out following example −
<html>
<body>
<?php
$note=<<<XML
<note>
<to>Gopal K Verma</to>
<from>Sairamkrishna</from>
<heading>Project submission</heading>
<body>Please see clearly </body>
</note>
XML;
$xml=simplexml_load_string($note);
print_r($xml);
?>
</body>
</html>
It will produce the following result –
SimpleXMLElement
Object ( [to] => Gopal K Verma [from] => Sairamkrishna [heading] =>
Project submission [body] => Please see clearly )
NOTE −
You can use function simplexml_load_file( filename) if you
have XML content in a file.
For a complete detail of XML parsing function
check PHP Function Reference.
Generating an
XML Document
SimpleXML is good for parsing existing XML
documents, but you can't use it to create a new one from scratch.
The easiest way to generate an XML document is to
build a PHP array whose structure mirrors that of the XML document and then to
iterate through the array, printing each element with appropriate formatting.
Example
Try out following example −
<?php
$channel = array('title' => "What's
For Dinner",
'link' => 'http://menu.example.com/',
'description' => 'Choose what to eat tonight.');
print "<channel>\n";
foreach ($channel as $element => $content) {
print " <$element>";
print
htmlentities($content);
print "</$element>\n";
}
print "</channel>";
?>
It will produce the following result −
<channel>
<title>What's For Dinner</title>
<link>http://menu.example.com/</link>
<description>Choose what to eat
tonight.</description>
</channel>