9

phpでgzip圧縮されたxmlファイルを読み取るのに苦労しています。

次のようなXMLReader()を使用して、通常のxmlファイルを読み取ることに成功しました。

$xml = new XMLReader();
$xml->open($linkToXmlFile);

ただし、これはxmlファイルがgzipで圧縮されている場合は機能しません。ファイルを解凍してXMLReaderで読み取るにはどうすればよいですか?

4

3 に答える 3

24

PHPのバージョンを指定しなかったので、PHP5を使用していると仮定します。

なぜ人々は組み込みのPHP圧縮ストリームAPIの使用を提案しなかったのか疑問に思います。

$linkToXmlFile = "compress.zlib:///path/to/xml/file.gz";
$xml = new XMLReader();
$xml->open($linkToXmlFile);

私が理解していることから、内部では、ファイルが透過的に解凍され、プレーンなxmlファイルであるかのように読み取ることができます。さて、それはひどく控えめな表現かもしれません。

于 2009-07-27T22:46:06.313 に答える
4

多分関数gzdecodeはあなたを助けるかもしれません:マニュアルは言う(引用):

gzip圧縮文字列をデコードします

だから、あなたはしなければならないでしょう:

  • XMLデータをダウンロードする
  • 文字列として取得
  • で解凍しますgzdecode
  • でそれに取り組むXMLReader

それはあなたのサーバーにインストールされている正しい拡張機能zlib私は推測する)に依存しますが...

マーク:パスカルの投稿を拡張して、ここにあなたのために働くはずのいくつかのサンプルコードがあります

$xmlfile = fopen($linkToXmlFile,'rb');
$compressedXml = fread($xmlfile, filesize($linkToXmlFile));
fclose($xmlfile);
$uncompressedXml = gzdecode($compressedXml); 

$xml = new XMLReader();
$xml->xml($uncompressedXml);
于 2009-07-27T22:23:07.843 に答える
2

Pascal の投稿を拡張して、ここにいくつかのサンプル コードを示します。

$xmlfile = fopen($linkToXmlFile,'rb');
$compressedXml = fread($xmlfile, filesize($linkToXmlFile));
fclose($xmlfile);
$uncompressedXml = gzdecode($compressedXml); 

$xml = new XMLReader();
$xml->xml($uncompressedXml);
于 2009-07-27T22:28:25.600 に答える