我通過一個約12mb大的XML文件進行解析。我需要解析整個文件並在MySQL數據庫中存儲我所需要的內容。如何解析PHP中的大型XML文件?
我將XML文件轉換爲數組。然後我解析數組並存儲值。
這很好,當XML是非常小,但它只是停止行爲時,我運行我的12MB文件。
我嘗試了將XML轉換爲我在網上找到的數組並且它們都不工作的多個函數。
這是我有兩個不同的XML到陣列的功能得到了一個常見的錯誤我在網上找到:
Fatal error: [] operator not supported for strings
我使用SimpleXML,有沒有解決這個更好的辦法?除了SimpleXML以外,是否還有足夠強大的庫來處理大型XML文件?
我現在有這樣的:
$z = new XMLReader;
$z->open('feedfetch.xml');
$doc = new DOMDocument;
while ($z->read() && $z->name !== 'collection');
while ($z->name === 'collection')
{
$node = simplexml_import_dom($doc->importNode($z->expand(), true));
var_dump($node[0]);
exit;
$z->next('collection');
}
你看到我的變種轉儲?它迴響了一堆XML對象,但我不知道如何使用數據到達實際節點?
我應該將它轉換爲數組,然後解析它並填充我的數據庫或解析實際的XML? – vick 2010-11-16 22:26:05
不!整個過程就是你通過實體處理實體,使用循環從XML中檢索需要的內容,將每行插入到數據庫中,然後執行插入操作。這樣,你沒有把整個東西加載到內存中,並使用PHP的限制 – 2010-11-16 22:41:51
我更新了這篇文章,你可以看一下嗎? – vick 2010-11-16 23:44:35