目前,我正在使用LIBXML :: SAXParser :: Callbacks來解析包含數據140,000個產品的大型XML文件。我正在使用任務將這些產品的數據導入到我的Rails應用程序中。用Ruby on Rails解析非常大的XML文件(1.4GB) - 有沒有比SAXParser更好的方法?
我最後的進口只花了不到10個小時才能完成:
rake asi:import_products --trace 26815.23s user 1393.03s system 80% cpu 9:47:34.09 total
與目前執行的問題是,在XML的複雜的依存結構意味着,我需要跟蹤整個產品節點來知道如何正確解析它。理想情況下,我想要一種可以自己處理每個產品節點並能夠使用XPATH的方式,文件大小限制了我們使用需要將整個XML文件加載到內存中的方法。我無法控制原始XML的格式或大小。我最多可以使用3GB的內存。
有沒有比這更好的方法?
你需要在Ruby中完成嗎? C#或Java會成爲您願意考慮的選項嗎? – 2010-05-18 19:38:33
它不需要在ruby中解析,但數據最終將被Rails應用程序使用。任何可以把它放到我的數據庫中的東西就足夠了。儘管如此,Ruby似乎是最容易解決這個特定問題的代碼。 我寧願不要在這個C#上使用C#,但如果其中一個提供了一個特別簡單的解決方案,我可以使用Java,PHP,Python或Perl。 – DBruns 2010-05-18 20:08:42
查看擴展的VTD-XML或標準的vtd-xml,問題應該立即解決.. – 2010-05-18 20:21:00