2010-05-24 51 views
2

我在構建一個庫來訪問Google Analytics數據導出API。庫訪問的所有數據都是Atom格式,並在整個過程中使用許多不同的名稱空間。我對API的實驗已經使用SimpleXML進行解析,特別是我一直在做的就是訪問Feed中保存的數據。PHP DOM與SimpleXML for Atom GData提要解析

現在我來編寫一個庫我想知道是否充足開發SimpleXML是否足夠,或者PHP中DOM模塊的增強功能是否會在未來受益。我還沒有爲這部分庫編寫很多代碼,所以選擇仍然是開放的。

我讀過如果您需要動態構建XML DOM或修改現有的XML DOM,PHP DOM模塊可能是更好的選擇,但我並不完全相信我會需要該功能,因爲API的性質(例如,不向服務器推送數據)。 SimpleXML當然更易於使用,並且我看到有人說,對於只讀情況,這是您所需要的。

基本上問題是,你會用什麼?由於服務器配置將與應用程序的要求相匹配,所以兼容性不會成爲問題。是否值得用PHP DOM來構建庫,還是應該堅持使用SimpleXML?

更新:這裏是那種飼​​料的兩個例子,我將處理:

  1. Account feed
  2. Data feed

回答

5

我對此採取:

SimpleXML的優點:

  • 簡單
  • 半直觀的非冗長的代碼
  • 大讀/解析文件

SimpleXML缺點:

  • 生成XML很糟糕。
  • 在靈活性和能力

DOM專業人員缺乏:

  • 非常強大
  • 偉大的生成文檔
  • 會很熟悉,如果你做任何其他的DOM腳本(例如:使用Javascript)

DOM缺點:

  • 放牧
  • 有時不必要的複雜。

我個人會一直堅持DOM。它可以讓你在任何你需要去的地方。這些文件已經足夠了,雖然你的雙手可能會在所有打字中感到疼痛,但你永遠不會感到沮喪:「爲什麼它不能做 ??」

如果您只需讀取文檔或進行一些非常基本的編輯,那麼可能需要使用SimpleXML。不過,對於我來說,我已經習慣了DOM庫,所以我只是隨處使用它,它很棒。

0

的SimpleXML是完全能夠處理的命名空間。在你的情況下,你只需要遍歷條目,使用getNameSpaces並將參數傳遞給children方法來請求具有特定名稱空間的子節點。

也就是說,如果你想寫3x的代碼,你可以使用DOM。

+0

是的,這就是我現在正在做的事情。我更擔心的是我需要做一些DOM操作和/或創建的情況。 – 2010-05-24 14:14:49

0

那麼,如果你需要重新發明輪子,我可能會使用SimpleXML ...或者你可以只使用Zend_Gdata(如果你需要的是在那裏)或者如果它不是Zend_Feed_Atom。任一選項應該可能是您需要做的一半的工作量:)

+1

是的,有人爲GitHub上的一些代碼提交了Zend_Gdata的Google Analytics模塊,但在我的情況下,我使用OAuth作爲身份驗證層,並且據我所知Zend_Gdata還沒有完全支持。我可能是錯的 - 隨時糾正我! Zend_Feed_Atom如何使用名稱空間元素?我認爲它應付完美罰款? – 2010-05-24 14:13:53

+0

它應該處理剛纔查找的命名空間。 Zend_Feed基類具有registerNamespace和lookupNamespace方法,我認爲它們在名稱空間管理方面的工作方式類似,過去我必須在我的一些基於SimpleXML的類上編寫這些方法。 – prodigitalson 2010-05-24 14:31:40