9

我正在努力阅读 php 中的 gzipped 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 回答