Hallo,
ich nutze folgende Klasse um ein XML in ein Array zu packen.
Das funktioniert mit kleineren XML-Dateien auch super, aber
ich habe eine XML-Datei von 10 MB und die macht er mir nicht. Ich bekomm aber auch keiner Fehlermeldung!
Kann es sein, dass das array nicht soviel speicher packen kann, wenn ja unter welcher einstellung kann ich das ändern. hab bis jetzt nix gefunden!
danke
ich nutze folgende Klasse um ein XML in ein Array zu packen.
Das funktioniert mit kleineren XML-Dateien auch super, aber
ich habe eine XML-Datei von 10 MB und die macht er mir nicht. Ich bekomm aber auch keiner Fehlermeldung!
Kann es sein, dass das array nicht soviel speicher packen kann, wenn ja unter welcher einstellung kann ich das ändern. hab bis jetzt nix gefunden!
danke
PHP-Code:
class XmlToArray
{
var $xml='';
function XmlToArray($xml)
{
$this->xml = $xml;
}
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;
}
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;
}
}
Kommentar