Reading XML
I am listing here method for reading XML file or XML string with the help of PHP.
<?php
$xml =<<<EOT
<?xml version="1.0"?>
<root>
<section name="Section1">
<category id="Category1" name="google">
<article name="article1">value1</article>
</category>
<category id="Category2" name="yahoo">
<article name="articleSection2">Test value</article>
</category>
</section>
<section name="Section2">
<category id="category1_of_section2" name="msn">
<article name="article2">value1</article>
<article name="article3">value2</article>
</category>
<category id="Category2_of_section2" name="dd">
<article name="param3">value4</article>
</category>
</section>
</root>
EOT;
$dom = new DOMDocument();
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($xml); // Load XML File. You can use 'load' if you wish to load XML data from a xml file
$params = $dom->getElementsByTagName('section'); // Find Sections
$k=0;
foreach ($params as $param) //go to each section 1 by 1
{
echo "Section Attribute :-> ".$params->item($k)->getAttribute('name')."<br>"; //get section attribute
$params2 = $params->item($k)->getElementsByTagName('category'); //categories within Section
$i=0; // value is used to iterate categories
foreach ($params2 as $p) {
echo "Category Attribute Name :-> ".$params2->item($i)->getAttribute('name')."<br>"; //get Category attributes
$params3 = $params2->item($i)->getElementsByTagName('article'); //Article within Categories
$j=0;//values used to iterate Articles
foreach ($params3 as $p2)
{
echo "Article Attribute Name : ".$params3->item($j)->getAttribute('name')."<br/>"; //get article atributes
echo "Value:".$params3->item($j)->nodeValue."<br>"; //get Node value
$j++;
}
$i++;
}
$k++;
}
?>
The output on executing above code will be:
Section Attribute :-> Section1 Category Attribute Name :-> google Article Attribute Name : article1 Value:value1 Category Attribute Name :-> yahoo Article Attribute Name : articleSection2 Value:Test value Section Attribute :-> Section2 Category Attribute Name :-> msn Article Attribute Name : article2 Value:value1 Article Attribute Name : article3 Value:value2 Category Attribute Name :-> dd Article Attribute Name : param3 Value:value4
I am listing here another example:
<?php
$xml =<<<EOT
<?xml version="1.0"?>
<root>
<category>
<id>1</id>
<title>catname1</title>
<desc>catname1 description</desc>
<udate>2010-01-1 03:50:22</udate>
<published>1</published>
</category>
<category>
<id>2</id>
<title>catname2</title>
<desc>catname2 description</desc>
<udate>2010-02-2 03:50:22</udate>
<published>1</published>
</category>
</root>
EOT;
$dom = new DOMDocument();
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($xml);
$categories = $dom->getElementsByTagName("category"); // categories
foreach ($categories as $value) //go to each category 1 by 1
{
$values = $value->getElementsByTagName("*");
$reviewarr = array();
foreach($values as $node)
{
$nodename = $node->nodeName;
$nodevalue = $node->nodeValue;
echo $nodename.' ::'.$nodevalue.'<br/>';
}
}
?>
The output on executing above code will be:
id ::1 title ::catname1 desc ::catname1 description udate ::2010-01-1 03:50:22 published ::1 id ::2 title ::catname2 desc ::catname2 description udate ::2010-02-2 03:50:22 published ::1
For further reference click here
