Я изо всех сил пытаюсь читать gzipped xml-файлы в php.
Мне удалось прочитать нормальные xml-файлы, используя XMLReader () следующим образом:
$xml = new XMLReader(); $xml->open($linkToXmlFile);
Однако это не работает, когда файл xml gzipped. Как я могу разархивировать файл и прочитать его с помощью XMLReader?
Поскольку вы не указали версию PHP, я предполагаю, что вы используете PHP5.
Мне интересно, почему люди не предлагали использовать встроенный API-интерфейсы потоков сжатия PHP .
$linkToXmlFile = "compress.zlib:///path/to/xml/file.gz"; $xml = new XMLReader(); $xml->open($linkToXmlFile);
Из того, что я понимаю, под обложками, он будет прозрачно распаковывать файл для вас и позволит вам читать его, как если бы это был простой XML-файл. Теперь это может быть грубое преуменьшение.
Возможно, функция gzdecode
может вам помочь: руководство говорит (цитата):
Декодирует сжатую строку gzip
Итак, вам нужно:
gzdecode
XMLReader
Это будет зависеть от правильного расширения ( zlib
я думаю), установленного на вашем сервере, хотя …
Марк : Расширяясь на посту Паскаля, вот пример кода, который должен сработать для вас
$xmlfile = fopen($linkToXmlFile,'rb'); $compressedXml = fread($xmlfile, filesize($linkToXmlFile)); fclose($xmlfile); $uncompressedXml = gzdecode($compressedXml); $xml = new XMLReader(); $xml->xml($uncompressedXml);
Расширяясь на посту Паскаля, вот пример кода, который должен работать для вас
$xmlfile = fopen($linkToXmlFile,'rb'); $compressedXml = fread($xmlfile, filesize($linkToXmlFile)); fclose($xmlfile); $uncompressedXml = gzdecode($compressedXml); $xml = new XMLReader(); $xml->xml($uncompressedXml);