How to get data from XML file in PHP

XML(Extensible Markup Language) serves the best choice to use in web services and data transports. It is widely used in web applications. We can easily render data stored in XML as it stores data in a formatted way that is easy to search and understand. It makes it easier for an informative application to store, retrieve and display data. It is widely used in business-to-business transactions, generating metadata, e-commerce applications and so on.

PHP provides a set of methods that help in XML creation and manipulation. By using SimpleXML extension, we can easily get XML data. The XML data is returned from webservices and with the help of SimpleXML, we can easily parse the data.

Suppose the web service returns the following student data in an XML file ‘students.xml‘ –

<?xml version="1.0" encoding="iso-8859-1"?>
<students>
<student>
<firstname>Abdul</firstname>
<lastname>Mohammad</lastname>
<age>12</age>
<class>5</class>
</student>
<student>
<firstname>N</firstname>
<lastname>Rupesh</lastname>
<age>11</age>
<class>4</class>
</student>
</students> 


PHP simplexml_load_file()

The simplexml_load_file() function interprets an XML file into an object. It returns an object with properties containing the data held within the XML document. We can access any element from the XML by using this object. In the given example, we have used the foreach method to iterate through the entire XML file and read elements from XML.

<?php
$studentdata = simplexml_load_file('students.xml');
if(!$studentdata){
    echo 'Fail to load XML file';
}
else{
    foreach($studentdata as $student){
        echo 'Firstname: '.$student->firstname.'<br/>';
        echo 'Lastname: '.$student->lastname.'<br/>';
        echo 'Age: '.$student->age.'<br/>';
        echo 'Class: '.$student->class.'<br/><br/>';
    }
}
?>    

When you run the above code in the browser, it returns the data in the given format.

Firstname: Abdul 
Lastname: Mohammad
 Age: 12 
Class: 5

 Firstname: N
 Lastname: Rupesh
 Age: 11
 Class: 4 

Leave a Reply

Your email address will not be published.