我正在努力阅读 php 中的 gzipped xml 文件。
我确实成功地使用 XMLReader() 读取了普通的 xml 文件,如下所示:
$xml = new XMLReader();
$xml->open($linkToXmlFile);
但是,当 xml 文件被 gzip 压缩时,这不起作用。如何解压缩文件并使用 XMLReader 读取它?
由于您没有指定 PHP 版本,我假设您使用的是 PHP5。
我想知道为什么人们不建议使用内置的PHP 压缩流 API。
$linkToXmlFile = "compress.zlib:///path/to/xml/file.gz";
$xml = new XMLReader();
$xml->open($linkToXmlFile);
据我了解,在幕后,它将透明地为您解压缩文件,并允许您像阅读普通 xml 文件一样阅读它。现在,这可能是一种严重的轻描淡写。
也许该功能gzdecode
可以帮助您:手册说(引用):
解码 gzip 压缩字符串
所以,你必须:
gzdecode
XMLReader
这将取决于您的服务器上安装的正确扩展(zlib
我猜),不过......
马克:扩展帕斯卡的帖子,这里有一些示例代码应该适合你
$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);