Atom GData besleme ayrıştırma için SimpleXML vs PHP DOM

3 Cevap php

Ben Google Analytics Dışa Veri Aktarma API erişmek için bir kütüphane inşa ediyorum. Kütüphane erişen tüm veriler Atom formatında ve genelinde çok sayıda farklı ad kullanır. API ile benim deneyler ben yapıyor bütün yem tutulan veri erişimini, özellikle de bugüne kadar ayrıştırma için SimpleXML kullandık.

Şimdi ben SimpleXML ile önde dövme PHP DOM modülünün geliştirilmiş işlevselliği gelecekte yarar olacağını yeterli olabilir ya da olup olmadığını merak ediyorum bir kütüphane yazmak için geliyorum. Ben kütüphanenin bu bölümü için çok kod yazmadım henüz bu seçim hala açıktır.

Ben size anında bir XML DOM oluşturmak veya varolan bir değişiklik gerekiyorsa PHP DOM modül daha iyi bir seçim olabilir ki okudum, ama ben nedeniyle API doğası zaten bu özelliğe ihtiyaç duyduğu tamamen emin değilim (hayır örneğin, sunucuya veri bastırıyor). SimpleXML kesinlikle kullanımı daha kolaydır ve insanlar salt okunur durumlar için ihtiyacınız olduğunu söyleyerek gördük.

Esasen soru ne kullanmak istiyorsunuz, nedir? Sunucu yapılandırma uygulamanın gereksinimlerini maç olacak gibi uyumlu bir sorun olmayacaktır. Akılda PHP DOM ile kütüphane binası değer mi yoksa ben şimdi SimpleXML ile sopa gerekir?

Update: İşte ben ile ilgili olacak yemlerin tür iki örnek:

  1. Account feed
  2. Data feed

3 Cevap

Bunun üzerine benim almak:

BasitXML pros:

  • Basit
  • Yarı sezgisel olmayan ayrıntılı kod
  • Okuma / ayrıştırma belgeler için büyük

BasitXML cons:

  • XML üretmek için korkunç.
  • Esneklik ve güç eksik

DOM pros:

  • Son derece güçlü
  • Belgeleri oluşturmak için büyük
  • Eğer herhangi bir diğer DOM scripting (: Javascript gibi) yaptık eğer aşina olacak

DOM cons:

  • Gereksiz sözlerle dolu
  • Bazen gereksiz yere karmaşık.

Ben şahsen DOM tüm yol sopa olur. Bu yere gitmek gerekir alırsınız. Belgeler yeterli fazla ve ellerinizi tüm yazarak boğaz alabilirsiniz rağmen, sinirli düşünme olsun asla "neden sadece this yapamaz?"

Yapmanız gereken bir belgeyi okumak, ya da bazı çok temel düzenleme yapmak ise, o zaman muhtemelen BasitXML ile gitmek. Benim için ancak ben DOM kütüphaneleri alışkınım, bu yüzden sadece her yerde kullanabilir ve bu harika.

SimpleXML ad alanları ile ilgili mükemmel yeteneğine sahiptir. Sizin durumda sadece, girdileri arasında yineleme getNameSpaces kullanmak ve belli bir ad çocuklara istemek için children yöntemine bir argüman geçmek zorunda.

Eğer kod 3x yazmak isterseniz O dedi, DOM kullanabilirsiniz.

Peki tekerleği yeniden icat etmek gerekirse, ben muhtemelen SimpleXML kullanmak istiyorsunuz ... Yoksa sadece (ne gerek var ise) Zend_Gdata kullanın veya Zend_Feed_Atom genişletmek olabilir onun değil. Ya seçenek iş muhtemelen yarısı miktarı yapmanız gerekir :)