Quick and easy way to generate an xml feed from a database and read them back into an array.
1<?php 2function &last(&$array) { 3if (!count($array)) return null; 4end($array); 5return $array[key($array)]; 6} 7 8function myParseXML(&$vals, &$dom, &$lev) { 9 do {10 $curr = current($vals);11 $lev = $curr['level'];12 switch ($curr['type']) {13 case 'open':14 if (isset($dom[$curr['tag']])) {15 $tmp = $dom[$curr['tag']];16 if (!$tmp['__multi'])17 $dom[$curr['tag']] = array('__multi' => true, $tmp);18 array_push($dom[$curr['tag']], array());19 $new =& last($dom[$curr['tag']]);20 } else {21 $dom[$curr['tag']] = array();22 $new =& $dom[$curr['tag']];23 }24 next($vals);25 myParseXML(&$vals, $new, $lev);26 break;27 case 'cdata':28 break;29 case 'complete':30 if (!isset($dom[$curr['tag']]))31 $dom[$curr['tag']] = $curr['value'];32 else {33 if (is_array($dom[$curr['tag']]))34 array_push($dom[$curr['tag']] , $curr['value']);35 else36 array_push($dom[$curr['tag']] = array($dom[$curr['tag']]) , $curr['value']);37 }38 break;39 case 'close':40 return;41 }42 }43 while (next($vals)!==FALSE);44}4546function MyXMLtoArray($XML) {47 $xml_parser = xml_parser_create();48 xml_parse_into_struct($xml_parser, $XML, $vals);49 xml_parser_free($xml_parser);50 reset($vals);51 $dom = array(); $lev = 0;52 myParseXML($vals, $dom, $lev);53 return $dom;54}5556function mysql2xml($sql, $dblink) {57 $counter = 0;58 unset($fields);5960 $output = "<?phpxml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";61 $output .= "<coredata>\n";6263 $res = mysqli_query($dblink, $sql);6465 for ($i=0; $i<mysqli_num_fields($res); $i++)66 $fields[] = mysqli_field_name($res, $i);6768 while ($myr = mysqli_fetch_array($res)) {69 $counter++;7071 $output .= " <entry$counter>\n";7273 for ($i=0; $i<count($fields); $i++) {74 $field = $fields[$i];75 $data = $myr[$field];7677 $output .= " <$field>$data</$field>\n";78 }7980 $output .= " </entry$counter>\n";81 }8283 $output .= "</coredata>\n";8485 return $output;86}