2009-07-27 53 views
8

我很努力讀取php中的gzipped xml文件。PHP打開gzipped XML

我在讀正常的xml文件,使用的XMLReader()這樣的成功:

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

然而,當XML文件gzip壓縮,這並不工作。如何解壓縮文件並使用XMLReader讀取它?

回答

20

工作,當你沒有指定PHP版本,我會假設你正在使用PHP5。

我想知道爲什麼人們還沒有建議使用內置的PHP compression streams API

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

據我瞭解,在幕後,它會透明地解壓縮與您的文件,讓你彷彿是一個純XML文件中讀取。現在,這可能是一個粗略的輕描淡寫。

+0

不知道它存在,優秀的建議:) – Mark 2009-07-27 23:24:17

3

也許功能gzdecode可以幫助你:手冊上說(報價):

解碼gzip壓縮串

所以,你必須:

  • 下載XML數據
  • 將其作爲字符串獲取
  • XMLReader

gzdecode

  • 工作這將取決於正確的延伸zlib我猜) beeing安裝在服務器上,但...解壓

    Mark :擴展Pascal的帖子,這裏是一些應該爲你工作的示例代碼

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

    擴大帕斯卡後,這裏是一些示例代碼,應該爲你

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

    如果是關於添加代碼示例的原因,爲什麼不編輯依賴文章並將其添加? – hakre 2013-10-22 12:39:35