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
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.
XML ayrıştırma - vs SAX ve DOM Element...
Nasıl PHP ve HTML/XML ayrıştırma işlem...
Dize Şamandıra veya İnt ayrıştırma...
Nasıl ayrıştırma kullanarak Node.js JS...
Nasıl Python ile XML ayrıştırma mı?...