PHP打开gzipped XML

时间:2009-07-27 22:04:01

标签: php xml gzip xmlreader

我正在努力阅读php中的gzip压缩文件。

我使用XMLReader()成功读取了普通的xml文件:

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

但是,当xml文件被gzip压缩时,这不起作用。如何解压缩文件并使用XMLReader读取它?

3 个答案:

答案 0 :(得分:21)

由于您没有指定PHP版本,我将假设您使用的是PHP5。

我想知道为什么人们没有建议使用内置的PHP compression streams API

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

根据我的理解,在封面下,它将透明地为您解压缩文件,并允许您读取它,就好像是一个普通的xml文件。现在,这可能是轻描淡写。

答案 1 :(得分:4)

也许函数gzdecode可以帮到你:手册说(引用):

  

解码gzip压缩字符串

所以,你必须:

  • 下载XML数据
  • 将其作为字符串
  • 使用gzdecode
  • 解压缩
  • 使用XMLReader
  • 进行处理

这取决于您服务器上安装的正确扩展名zlib我猜),但是...

  

Mark:扩展Pascal的帖子,这里有一些适合你的示例代码

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

$xml = new XMLReader();
$xml->xml($uncompressedXml);

答案 2 :(得分:2)

扩展Pascal的帖子,这里有一些适合你的示例代码

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

$xml = new XMLReader();
$xml->xml($uncompressedXml);