106 lines
3.1 KiB
PHP
Executable File
106 lines
3.1 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* XMLToArray Generator Class
|
|
* @author : MA Razzaque Rupom <rupom_315@yahoo.com>, <rupom.bd@gmail.com>
|
|
* Moderator, phpResource (LINK1http://groups.yahoo.com/group/phpresource/LINK1)
|
|
* URL: LINK2http://www.rupom.infoLINK2
|
|
* @version : 1.0
|
|
* @date 06/05/2006
|
|
* Purpose : Creating Hierarchical Array from XML Data
|
|
* Released : Under GPL
|
|
*/
|
|
|
|
class XmlToArray
|
|
{
|
|
|
|
var $xml='';
|
|
|
|
/**
|
|
* Default Constructor
|
|
* @param $xml = xml data
|
|
* @return none
|
|
*/
|
|
|
|
function XmlToArray($xml)
|
|
{
|
|
$this->xml = $xml;
|
|
}
|
|
|
|
/**
|
|
* _struct_to_array($values, &$i)
|
|
*
|
|
* This is adds the contents of the return xml into the array for easier processing.
|
|
* Recursive, Static
|
|
*
|
|
* @access private
|
|
* @param array $values this is the xml data in an array
|
|
* @param int $i this is the current location in the array
|
|
* @return Array
|
|
*/
|
|
|
|
function _struct_to_array($values, &$i)
|
|
{
|
|
$child = array();
|
|
if (isset($values[$i]['value'])) array_push($child, $values[$i]['value']);
|
|
|
|
while ($i++ < count($values)) {
|
|
switch ($values[$i]['type']) {
|
|
case 'cdata':
|
|
array_push($child, $values[$i]['value']);
|
|
break;
|
|
|
|
case 'complete':
|
|
$name = $values[$i]['tag'];
|
|
if(!empty($name)){
|
|
$child[$name]= ($values[$i]['value'])?($values[$i]['value']):'';
|
|
if(isset($values[$i]['attributes'])) {
|
|
$child[$name] = $values[$i]['attributes'];
|
|
}
|
|
}
|
|
break;
|
|
|
|
case 'open':
|
|
$name = $values[$i]['tag'];
|
|
$size = isset($child[$name]) ? sizeof($child[$name]) : 0;
|
|
$child[$name][$size] = $this->_struct_to_array($values, $i);
|
|
break;
|
|
|
|
case 'close':
|
|
return $child;
|
|
break;
|
|
}
|
|
}
|
|
return $child;
|
|
}//_struct_to_array
|
|
|
|
/**
|
|
* createArray($data)
|
|
*
|
|
* This is adds the contents of the return xml into the array for easier processing.
|
|
*
|
|
* @access public
|
|
* @param string $data this is the string of the xml data
|
|
* @return Array
|
|
*/
|
|
function createArray()
|
|
{
|
|
$xml = $this->xml;
|
|
$values = array();
|
|
$index = array();
|
|
$array = array();
|
|
$parser = xml_parser_create();
|
|
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
|
|
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
|
|
xml_parse_into_struct($parser, $xml, $values, $index);
|
|
xml_parser_free($parser);
|
|
$i = 0;
|
|
$name = $values[$i]['tag'];
|
|
$array[$name] = isset($values[$i]['attributes']) ? $values[$i]['attributes'] : '';
|
|
$array[$name] = $this->_struct_to_array($values, $i);
|
|
return $array;
|
|
}//createArray
|
|
|
|
|
|
}//XmlToArray
|
|
|
|
?>
|