代码之家  ›  专栏  ›  技术社区  ›  Fortega

php打开gzipped xml

  •  8
  • Fortega  · 技术社区  · 15 年前

    我正在努力用PHP读取gzip的XML文件。

    我确实成功地读取了普通的XML文件,使用如下的xmlReader():

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

    但是,当XML文件是gzip文件时,这不起作用。如何解压文件并用xmlreader读取它?

    3 回复  |  直到 11 年前
        1
  •  21
  •   Jordan S. Jones    15 年前

    因为您没有指定PHP版本,所以我假设您使用的是php5。

    我想知道为什么人们没有建议使用内置的 PHP compression streams API .

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

    据我所知,在封面下,它将为您透明地解压缩文件,并允许您像读取纯XML文件一样读取它。现在,这可能是一个严重的轻描淡写。

        2
  •  4
  •   Community CDub    7 年前

    也许功能 gzdecode 可能对你有帮助:手册上说:

    解码gzip压缩字符串

    所以,你必须:

    • 下载XML数据
    • 把它当作一根绳子
    • 用减压器 GZDECODE
    • 与合作 XMLReader

    那将取决于正确的延期 ( zlib 我猜) 但你的服务器上安装了beeing…

    Mark :在Pascal的文章中展开,下面是一些适合您的示例代码。

    $xmlfile = fopen($linkToXmlFile,'rb');
    $compressedXml = fread($xmlfile, filesize($linkToXmlFile));
    fclose($xmlfile);
    $uncompressedXml = gzdecode($compressedXml); 
    
    $xml = new XMLReader();
    $xml->xml($uncompressedXml);
    
        3
  •  2
  •   Mark    15 年前

    在Pascal的文章中展开,下面是一些应该适用于您的示例代码

    $xmlfile = fopen($linkToXmlFile,'rb');
    $compressedXml = fread($xmlfile, filesize($linkToXmlFile));
    fclose($xmlfile);
    $uncompressedXml = gzdecode($compressedXml); 
    
    $xml = new XMLReader();
    $xml->xml($uncompressedXml);