PHP开gzip压缩的XML(PHP open gzipped XML)

2019-06-26 23:24发布

我挣扎在PHP读取gzip压缩的XML文件。

我当时在读正常的xml文件,使用的XMLReader()这样的成功:

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

然而,当XML文件gzip压缩,这并不工作。 我怎么能解压缩文件,并用XmlReader读它?

Answer 1:

当你没有指定PHP版本,我会假设你正在使用PHP5。

我很奇怪,为什么人们还没有使用内置的建议PHP压缩流API 。

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

据我了解,在幕后,它会透明地解压缩与您的文件,让你仿佛是一个纯XML文件中读取。 现在,这可能是一个轻描淡写。



Answer 2:

也许功能gzdecode可以帮助你:手册上说(报价):

解码gzip压缩串

所以,你必须:

  • 下载XML数据
  • 把它作为一个字符串
  • 与解压gzdecode
  • 与它合作XMLReader

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

马克 :扩大帕斯卡后,这里是一些示例代码应该为你工作

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

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


Answer 3:

扩大帕斯卡后,这里是一些示例代码应该为你工作

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

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


文章来源: PHP open gzipped XML