我挣扎在PHP读取gzip压缩的XML文件。
我当时在读正常的xml文件,使用的XMLReader()这样的成功:
$xml = new XMLReader();
$xml->open($linkToXmlFile);
然而,当XML文件gzip压缩,这并不工作。 我怎么能解压缩文件,并用XmlReader读它?
我挣扎在PHP读取gzip压缩的XML文件。
我当时在读正常的xml文件,使用的XMLReader()这样的成功:
$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
我猜的)beeing安装在服务器上,但...
马克 :扩大帕斯卡后,这里是一些示例代码应该为你工作
$xmlfile = fopen($linkToXmlFile,'rb');
$compressedXml = fread($xmlfile, filesize($linkToXmlFile));
fclose($xmlfile);
$uncompressedXml = gzdecode($compressedXml);
$xml = new XMLReader();
$xml->xml($uncompressedXml);
扩大帕斯卡后,这里是一些示例代码应该为你工作
$xmlfile = fopen($linkToXmlFile,'rb');
$compressedXml = fread($xmlfile, filesize($linkToXmlFile));
fclose($xmlfile);
$uncompressedXml = gzdecode($compressedXml);
$xml = new XMLReader();
$xml->xml($uncompressedXml);