i have 52gb xml file need insert database don't know structure. i've been searching on how iterate xmlreader seems have know structure this. if next() more 1 time goes end of file , if 1 time gives me first node data , can't see because of memory issues.
$reader = new xmlreader(); $reader->open('d:\_work\esstatistiklistemodtag.xml'); $reader->read(); $reader->next(); var_dump($reader->expand());
this tried , tried different functions of xmlreader no success. how can this? or advice.
that can not taken take on both parts
this simple code may understand structure. set path array empty , in output top level, foe example, . set in array path , watch next level - , . if not public transportation :), write 'car' array , watch next level...
$xml = new xmlreader(); $xml->open(filename); $path = array('root', 'car'...); $pp = array(); $selected = 0; // requied fragment $l = 0; // current level $level = count($path); // level watch while ($xml->read()) { if ($xml->nodetype == xmlreader::element) { // element start if ($l < $level) array_push($pp, $xml->name); if (($l == ($level-1) || !$level) && $path == $pp) { echo implode(', ', $pp)."<br>"; $selected = 1; } if (($l == $level) && ($selected )) echo " ".$xml->name."<br>"; $l++; } else if($xml->nodetype == xmlreader::end_element) { // element end if ($selected && ($l == $level)) { $selected = 0; // may write die here if dont wait repeats of "path" } $l--; if ($l < $level) array_pop($pp); } }
Comments
Post a Comment