, * http://groups.yahoo.com/group/phpresource/ * http://www.rupom.info * http://www.weberdev.com/get_example-4416.html * * @package Ai_Base_Library * @author Version 20110518, costmo * @since 20110518 */ class AiXmlToArray { var $xml=''; /** * Default Constructor * @param $xml = xml data * @return void */ function __construct( $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 ?>