phpでgzip圧縮されたxmlファイルを読み取るのに苦労しています。
次のようなXMLReader()を使用して、通常のxmlファイルを読み取ることに成功しました。
$xml = new XMLReader();
$xml->open($linkToXmlFile);
ただし、これはxmlファイルがgzipで圧縮されている場合は機能しません。ファイルを解凍してXMLReaderで読み取るにはどうすればよいですか?
PHPのバージョンを指定しなかったので、PHP5を使用していると仮定します。
なぜ人々は組み込みのPHP圧縮ストリームAPIの使用を提案しなかったのか疑問に思います。
$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);
Pascal の投稿を拡張して、ここにいくつかのサンプル コードを示します。
$xmlfile = fopen($linkToXmlFile,'rb');
$compressedXml = fread($xmlfile, filesize($linkToXmlFile));
fclose($xmlfile);
$uncompressedXml = gzdecode($compressedXml);
$xml = new XMLReader();
$xml->xml($uncompressedXml);