sql >> Databasteknik >  >> RDS >> Mysql

Parsar extremt stora XML-filer i php

I PHP kan du läsa in extremt stora XML-filer med XMLReader :

$reader = new XMLReader();
$reader->open($xmlfile);

Extremt stora XML-filer bör lagras i ett komprimerat format på disken. Åtminstone är detta vettigt eftersom XML-filer har ett högt komprimeringsförhållande. Till exempel gzippad som large.xml.gz .

PHP stöder det ganska bra med XMLReader via komprimeringsinpackningarna :

$xmlfile = 'compress.zlib://path/to/large.xml.gz';

$reader = new XMLReader();
$reader->open($xmlfile);

XMLReader låter dig arbeta på det aktuella elementet "bara". Det betyder att det bara är framåtriktat. Om du behöver behålla parsertillståndet måste du bygga det själv.

Jag tycker ofta att det är till hjälp att slå in de grundläggande rörelserna i en uppsättning iteratorer som vet hur man arbetar på XMLReader som att iterera genom element eller endast underordnade element. Du hittar det här beskrivet i Parse XML med PHP och XMLReader .

Se även:



  1. Frågehastighet baserat på kolumnernas ordning

  2. MySQL - Supertyp/Subtypdesign

  3. Vad är en formatsträng i SQL Server?

  4. Liquibase lås - anledningar?