Wenn Sie die Datei nicht aufteilen möchten, müssen Sie damit im Speicher arbeiten. Bei einer Dateigröße von 500 MB könnte dies problematisch werden. Eine Möglichkeit wäre, den XML-Prolog und DocType aus allen Dokumenten zu entfernen und dann das gesamte Ding so zu laden:
$dom = new DOMDocument;
$dom->loadXML(
sprintf(
'%s' .
'%s' .
'%s',
PHP_EOL,
PHP_EOL,
str_replace(
array(
'',
''
),
'',
file_get_contents('/pfad/zur/ihrer/datei.xml')
)
)
);
Dadurch würde eine riesige XML-Datei entstehen, nur mit einem XML-Prolog und einem DocType (ich gehe davon aus, dass der DocType für alle Dokumente in der Datei gleich ist). Sie könnten dann die Datei verarbeiten, indem Sie über die einzelnen Wurzelelemente iterieren.