How to handle XML with PHP

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 & (&amp;) and < (&lt;) and > (&gt;) 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>";
?>







Previous
Next Post »

9 comments

Write comments
Shailendra
AUTHOR
26 March 2018 at 03:14 delete


This information you provided in the blog that is really unique I love it!! Thanks for sharing such a great blog Keep posting..
PHP Training in Gurgaon
PHP Course in Gurgaon
PHP Institute in Gurgaon

Reply
avatar
26 March 2018 at 06:31 delete

Hi Author just now i found your blog its really awesome. Keep this work.Hire Xamarin Developer , Xamarin Development company

Reply
avatar
28 April 2018 at 05:04 delete

Great deal of information shared by you. It is very helpful for web development. Thank you for sharing
Lucknow Web Design Company | Web Redesign Company

Reply
avatar
Ankit Kumar
AUTHOR
9 May 2018 at 00:33 delete

Thanks for sharing this Vauable Information with us.
Web Designing Training in Noida

Reply
avatar
Fashionworld
AUTHOR
29 May 2018 at 04:34 delete

I like this type of web design article i realy appreciate your thought keep it up. its so useful for me and my knowledge.
Read More: Best Application Services Company in Jaipur
Best Blockchain Development Company in jaipur

Reply
avatar
arpan stanley
AUTHOR
12 July 2018 at 21:45 delete

You have discussed an interesting topic that every designer to know. Very well explained with examples. Spark interact is recruiting for 2018 check out the great new positions and apply online now Visit web design sydney and upload your resume.

Reply
avatar
17 July 2018 at 22:44 delete

I simply wanted to write down a quick word to say thanks to you for those wonderful tips and hints you are showing on this site.

White Label Website Builder

Reply
avatar