I'm trying to suck xml out from a published page, put it into an array structure thats useful and then insert the data into a database.

I would truly appreciate it if someone could help me sort out the following:


$data=fread(fopen('http://cms-stu-iis.gre.ac.uk/mk05/dotnet/staff.xml','r'),4096);
//fclose($fp);
xml_parse_into_struct($xml_parser, $data, $vals, $index);
xml_parser_free($xml_parser);

$params = array();
$level = array();
foreach ($vals as $xml_elem) {
  if ($xml_elem['type'] == 'open') {
   if (array_key_exists('attributes',$xml_elem)) {
     list($level[$xml_elem['level']],$extra) = array_values($xml_elem['attributes']);
   } else {
     $level[$xml_elem['level']] = $xml_elem['tag'];
   }
  }
  if ($xml_elem['type'] == 'complete') {
   $start_level = 1;
   $php_stmt = '$params';
   while($start_level < $xml_elem['level']) {
     $php_stmt .= '[$level['.$start_level.']]';
     $start_level++;
   }
   $php_stmt .= '[$xml_elem[\'tag\']] = $xml_elem[\'value\'];';
   eval($php_stmt);
  }
}

echo "<pre>";
print_r ($params);
echo "</pre>";

[code=php]

its supposed to read all the elements into an array but instead it does this:

Array
(
    [urn:schemas-microsoft-com:officedata] => Array
        (
            [STAFF] => Array
                (
                    [STAFFID] => 34
                    [STAFFFNAME] => Kerry
                    [STAFFSNAME] => Roberts
                    [STAFFPHONE] => 9969
                )

    )

)



Only the first instance of staff is read into  the array, not all instances.

Please someone help. You can go out with my sister if you help me..... >:)

captain_kirk@earthling.net
    Write a Reply...