What is XML?
The eXtensible Markup Language is a way to structure your data for sharing across sites. Some of the technologies that are crucial to the web like RSS (Real Simple Syndication) and Podcasts are special flavors of XML. The beautiful thing about XML is that you can easily roll your own for anything you need.
XML is easy to create because it’s a lot like HTML…except you can make up your own tags. Let’s say, for example that you’re putting together a feed for a list of songs playing at your own radio station. We’ll keep this simple, so we’ll just encode the name of the artist, the title of the song, plus the time when the song was played. We make up a couple of tags called
<title>
and <artist>
and wrap each of them around a <song>
tag. We’ll create a dateplayed attribute for each song with the date and time the song was played. You might encode something like that in this manner.<songs> <song dateplayed="2011-07-24 19:40:26"> <title>I left my heart on Europa</title> <artist>Ship of Nomads</artist> </song> <song dateplayed="2011-07-24 19:27:42"> <title>Oh Ganymede</title> <artist>Beefachanga</artist> </song> <song dateplayed="2011-07-24 19:23:50"> <title>Kallichore</title> <artist>Jewitt K. Sheppard</artist> </song> </songs>
There’s some rules that you have to adhere to when creating XML data. If you’re familiar with XHTML…you’ll be right at home with some of these, but let’s review them:
- XML is case sensitive so
<Title>`
is not the same as<title>
. - All XML elements must have closing tags.
- XML requires a root element (the
<songs>
tag above serves as our root element) - Attributes must be quoted
- Special characters (like &
(&)
and <(<)
and >(>)
signs) must be encoded.
Introducing simpleXML
With simpleXML, it’s as easy as reading the XML and then accessing it’s contents through an easy to read object. Assuming we’ve got our XML file above saved as a file called
songs.xml
in the same folder as our php file, we can read the whole feed into an object with the following code.<?php $mysongs = simplexml_load_file('songs.xml'); ?>
That’s it! The file can even be the URL of a feed on the web and not just a file on your hard drive. We now have an object that is a representation of our file. The songs object has been absorbed into the
$mysongs
variable. If we want to output the name of the first artist in our list we can refer to it like this:<?php $mysongs = simplexml_load_file('songs.xml'); echo $mysongs->song[0]->artist; ?>
Notice that our XML tags are mapped as part of the object so we can get to any element simply by typing it’s name. Remember that arrays are 0 indexed in PHP so our first title would be our 0th title. Now, let’s output the third song title.
<?php $mysongs = simplexml_load_file('songs.xml'); echo $mysongs->song[2]->title; ?>
Working with Attributes
In order to get to our dates, we’ll need to know how to access attributes, the notation is slightly different than with tags, but just as easy. As a matter of fact, it works just like accessing an array element. Let’s see how you would take a look at the second song’s date.
attribute.php
<?php
$mysongs = simplexml_load_file('songs.xml');
echo $mysongs->song[1]['dateplayed'];
?>
Making a list of songs
So now that we’ve got the basics of accessing elements, let’s write the code to make a complete list of our songs parsed by interpreting our XML file.
readsongs.php :
<?php
$mysongs = simplexml_load_file('songs.xml');
echo '<ul id="songlist"><br>';
foreach ($mysongs as $songinfo):
$title=$songinfo->title;
$artist=$songinfo->artist;
$date=$songinfo['dateplayed'];
echo "<li><div class='title'>",$title,"</div><div class='artist'>by ",$artist,"</div><time>",$date,"</time></li><br>";
endforeach;
echo "</ul>";
?>
Great deal of information shared by you. It is very helpful for web development. Thank you for sharing
ReplyDeleteLucknow Web Design Company | Web Redesign Company
I like this type of web design article i realy appreciate your thought keep it up. its so useful for me and my knowledge.
ReplyDeleteRead More: Best Application Services Company in Jaipur
Best Blockchain Development Company in jaipur
Thanks for sharing for web development & designing training, java training in Jodhpur, PHP training, android training, Digital marketing training.
ReplyDeleteAfter reading the above posts, I got some useful and informative knowledge. Thanks for posting it. php course in delhi
ReplyDeleteI am very grateful that I got some useful knowledge from this post. Many thanks so much for posting it. Keep it up. best php institute in delhi
ReplyDelete