2012-05-16 78 views
0

我試圖用PHP編輯一個大的XML文件(從Excel .xlsm文件中提取),我想知道哪個最好(關於性能):QueryPath或PHP的DOMDocument?用於編輯大型XML文件的QueryPath或DOMDocument?

該文件重量至少爲8 MB,並且包含大約40萬行(格式化時)。

感謝您的反饋

回答

2

的QueryPath基本上是圍繞DOMDocument的包裝。它爲裸露的DOMDocument對象增加了相對較少的開銷。對於訪問和寫入操作 - 例如attr(),append()等,應該沒有值得注意的性能差異。

但是,然後它涉及到一個大問題:尋找東西。

傳統上,遍歷DOMDocument是通過「走樹」或使用DOMNode->getElementsByTagname()完成的。如果你願意編寫代碼,這會相對較好。

使用QueryPath 2.x查詢對於大小很小的文檔會很慢,除非您使用非常特定的選擇器(例如':root> foo> bar> baz')。

但是,查詢大型對象時即將進入Alpha1的QueryPath 3.x速度要快很多倍。做qp('foo')與XPath一樣快......這使我有最後的選擇。

然後是內置的XPath處理器,它還帶有PHP的libxml支持。如果你正在做一個大型的XML文檔,這可能會給你更好的性能,因爲它以C速度而不是PHP速度執行。但是你將不得不編寫XPath表達式,這是(恕我直言)一種痛苦。

因此,底線:

  • 基礎:每個人都會。
  • 修改:任何一個都可以。
  • 大量的遍歷:
    • DOMDocument會讓你手動遍歷。
    • 的QueryPath 2.X緩慢
    • 的QueryPath 3.X快得多
    • XPath是最快的...但它的XPath
+0

感謝您的反饋意見。由於我不知道QueryPath 3.x,我放棄了2.2版本,並使用PHP的DOMDocument。 XML結構很容易理解,並且不會很深(在我的情況下最多5層)。所以使用它並不是一個很大的痛苦... – 3rgo