XML is often used as Data Interchange format. I have worked on e-commerce sites that acted as frontend for taking orders and these order were sent in XML format to third party fulfillment system.
Here we are going to parse a XML file using the DOMDocument class.
Say we have the following xml in books.xml file to parse
<?xml version="1.0" encoding="utf-8"?> <books> <book> <isbn>ASAS222</isbn> <title>Book 1</title> <author>Jack n Jill</author> <publisher>Bright Publishers</publisher> </book> <book> <isbn>SAAQ43</isbn> <title>Book 2</title> <author>Tom Boy</author> <publisher>Bright Publishers</publisher> </book> </books>
We can use the following code to parse the books.xml file
<?php $doc = new DOMDocument(); $doc->load( 'books.xml' ); $books = $doc->getElementsByTagName( "book" ); foreach( $books as $book ) { $isbns = $book->getElementsByTagName( "isbn" ); $isbn = $isbns->item(0)->nodeValue; $titles = $book->getElementsByTagName( "title" ); $title = $titles->item(0)->nodeValue; $authors = $book->getElementsByTagName( "author" ); $author = $authors->item(0)->nodeValue; $publishers = $book->getElementsByTagName( "publisher" ); $publisher = $publishers->item(0)->nodeValue; echo "$isbn -- $title -- $author -- $publisher\n"; } ?>
If we had xml in a string instead of xml file as
$xml = <<< XML <?xml version="1.0" encoding="utf-8"?> <books> <book> <isbn>ASAS222</isbn> <title>Book 1</title> <author>Jack n Jill</author> <publisher>Bright Publishers</publisher> </book> <book> <isbn>SAAQ43</isbn> <title>Book 2</title> <author>Tom Boy</author> <publisher>Bright Publishers</publisher> </book> </books> XML;
then in the PHP parser code above we will use
$doc->loadXML( $xml);
instead of
$doc->load( 'books.xml' );
Leave a Comment