SORU
10 EKİM 2008, Cuma


XML ayrıştırma - vs SAX ve DOM ElementTree

Python XML ayrıştırma için çeşitli yollar vardır

Ayrıştırmada çok temel anlıyorumSAX. Bu akış bir çözümleyici olarak, olay kaynaklı bir API ile çalışır.

Ben anlıyorumDOMayrıştırıcı da. Python ile erişilebilir nesneler için bellek ve bitki örtüsü içine XML okur.

Genel olarak konuşursak, 2 yapmanız gereken ne bağlı olarak, bellek kısıtlamaları, performans, vb arasında seçim yapmak kolay oldu.

(umarım şimdiye kadar doğru.

2.5, biz de PythonElementTree. Nasıl bu DOM ve SAX farkı nedir? Hangisi daha çok benzer? Neden daha önceki ayrıştırıcıları daha iyidir?

CEVAP
11 EKİM 2008, CUMARTESİ


ElementTree XML ağacını (temel olarak) listeler bir yapı olarak temsil ettiği için kullanmak çok daha kolaydır, ve nitelikleri sözlük olarak gösterilir.

ElementTree DOM (ve böylece daha hızlı) daha XML ağaçları için çok az bellek ihtiyacı ve iterparse) ayrıştırma yükü SAX karşılaştırılabilir. Ayrıca, iterparse kısmi yapılar verir ve bellek kullanımı sürekli onları işlemleri bitirir bitirmez yapıları atarak ayrıştırma sırasında tutabilirsiniz.

ElementTree, Python 2.5 olarak, tam gelişmiş XML kütüphaneleri kıyasla sadece küçük bir özellik vardır, ama birçok uygulama için yeterli. Eğer onaylayan bir ayrıştırıcı ya da tam XPath destek gerekiyorsa, lxml gitmek yoludur. Uzun bir süre için, oldukça kararsız olması için kullanılır, ama 2.1 beri herhangi bir sorun yaşamadım.

ElementTree düğümleri üst ve kardeşlerine erişebildiği DOM sapma,. Gerçek belgeler yerine, veri depoları, işleme metin düğümleri düğümleri gerçek olarak kabul etmiyor, çünkü aynı zamanda biraz hantal. XML parçasında

<a>This is <b>a</b> test</a>

Dize test sözde öğe tail b olacak.

Genel olarak, Python, ve belli sorunlara çözüm olarak DOM veya SAX ile XML işleme için varsayılan olarak ElementTree tavsiye ederim.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jcortes187

    jcortes187

    24 Mart 2006
  • TurkishRoyal

    TurkishRoyal

    16 Ocak 2007
  • vgeller1

    vgeller1

    22 Kasım 2009