Posts Tagged XML
Convert XML to Array using DOM extension in PHP5
The xml2array class convert the XML stored in a string into an ARRAY. We are using the DOM extension of PHP5. The DOM extension replaced the DOM XML extension available in PHP4. The DOM XML extension is depreciated in PHP5.
<?php class xml2array { function xml2array($xml) { if (is_string($xml)) { $this->dom = new DOMDocument; $this->dom->loadXml($xml); } return FALSE; } function _process($node) { $occurance = array(); foreach($node->childNodes as $child) { $occurance[$child->nodeName]++; } if($node->nodeType == XML_TEXT_NODE) { $result = html_entity_decode(htmlentities($node->nodeValue, ENT_COMPAT, 'UTF-8'), ENT_COMPAT,'ISO-8859-15'); } else { if($node->hasChildNodes()){ $children = $node->childNodes; for($i=0; $i<$children->length; $i++) { $child = $children->item($i); if($child->nodeName != '#text') { if($occurance[$child->nodeName] > 1) { $result[$child->nodeName][] = $this->_process($child); } else { $result[$child->nodeName] = $this->_process($child); } } else if ($child->nodeName == '#text') { $text = $this->_process($child); if (trim($text) != '') { $result[$child->nodeName] = $this->_process($child); } } } } if($node->hasAttributes()) { $attributes = $node->attributes; if(!is_null($attributes)) { foreach ($attributes as $key => $attr) { $result["@".$attr->name] = $attr->value; } } } } return $result; } function getResult() { return $this->_process($this->dom); } } ?>
We can use this class like this.
<?php $obj = new xml2array($XML_string); $XML_array = $obj->getResult(); ?>