【发布时间】:2010-11-14 12:33:48
【问题描述】:
我正在努力阅读 php 中压缩的 xml 文件。
我确实成功地读取了普通的 xml 文件,使用 XMLReader() 像这样:
$xml = new XMLReader();
$xml->open($linkToXmlFile);
但是,当 xml 文件被 gzip 压缩时,这不起作用。如何解压文件并使用 XMLReader 读取?
【问题讨论】:
我正在努力阅读 php 中压缩的 xml 文件。
我确实成功地读取了普通的 xml 文件,使用 XMLReader() 像这样:
$xml = new XMLReader();
$xml->open($linkToXmlFile);
但是,当 xml 文件被 gzip 压缩时,这不起作用。如何解压文件并使用 XMLReader 读取?
【问题讨论】:
由于您没有指定 PHP 版本,我假设您使用的是 PHP5。
我想知道为什么人们不建议使用内置的PHP compression streams API。
$linkToXmlFile = "compress.zlib:///path/to/xml/file.gz";
$xml = new XMLReader();
$xml->open($linkToXmlFile);
据我了解,在幕后,它会透明地为您解压缩文件,并允许您像阅读普通 xml 文件一样阅读它。现在,这可能是一种严重的轻描淡写。
【讨论】:
也许函数gzdecode 可以帮助你:手册说(引用):
解码一个 gzip 压缩字符串
所以,你必须:
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);
【讨论】:
扩展 Pascal 的帖子,这里有一些适合你的示例代码
$xmlfile = fopen($linkToXmlFile,'rb');
$compressedXml = fread($xmlfile, filesize($linkToXmlFile));
fclose($xmlfile);
$uncompressedXml = gzdecode($compressedXml);
$xml = new XMLReader();
$xml->xml($uncompressedXml);
【讨论】: