note 42650 added to ref.xml

From: Date: Tue, 25 May 2004 13:56:19 +0000
Subject: note 42650 added to ref.xml
Groups: php.notes 
Request: Send a blank email to php-notes+get-70055@lists.php.net to get a copy of this message
An update of rcotta at ig dot com dot br. The function below will not overwrite an existent element. <? function makeXMLTree($file) { $open_file = fopen($file, "r"); $data = fread($open_file, filesize($file)); $ret = array(); $parser = xml_parser_create(); xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0); xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); xml_parse_into_struct($parser,$data,$values,$tags); xml_parser_free($parser); $hash_stack = array(); $a=0; foreach ($values as $key => $val) { switch ($val['type']) { case 'open': array_push($hash_stack, $val['tag']); break; case 'close': array_pop($hash_stack); break; case 'complete': array_push($hash_stack, $val['tag']); // uncomment to see what this function is doing /* echo("\$ret[$a][" . implode($hash_stack, "][") . "] = '{$val[value]}';\n"); $a++;*/ eval(" \$ret[\$a][" . implode($hash_stack, "][") . "] = '{$val[value]}'; \$a++;"); array_pop($hash_stack); break; } } return $ret; } $res = makeXMLTree($xml_file); print_r($res); ?> ---- Manual Page -- http://www.php.net/manual/en/ref.xml.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+42650 Delete -- http://master.php.net/manage/user-notes.php?action=delete+42650&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+42650&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#70055) next »