1. XML Giriş
XML (eXtensible Markup Language), veri iletip depolamak için tasarlanmış genişletilebilir bir işaretleme dili olarak adlandırılır ve günümüzde farklı alanlarda farklı uygulamalara sahip birçok yeni teknolojinin çekirdeği haline gelmiştir. Web'in belirli bir aşamaya kadar geliştirilmesinin kaçınılmaz bir ürünüdür; bu özellikler SGML'nin temel özelliklerine, HTML'in basit özelliklerine ve açık, iyi yapılandırılmış gibi birçok yeni özelliğe sahiptir.
Test. XML dosyası
<?xml version="1.0" encoding="utf-8"?> <catalog> <maxid>4</maxid> <login username="pytest" passwd='123456'> <caption>Python</caption> <item id="4"> <caption>Test</caption> </item> </login> <item id="2"> <caption>Zope</caption> </item> </catalog> XML'e dair ayrıntılı bir giriş için lütfen şu adrese bakınız:http://www.w3school.com.cn/xmldom/dom_nodetype.asp
2. XML belge ayrıştırma
Python'un XML'i ayrıştırmak için üç yaygın yöntemi vardır: biri xml.dom.* modülüdür; bu, W3C DOM API'nin bir uygulamasıdır ve DOM API'sini işlemeniz gerekirse çok uygundur; İkincisi ise SAX API'sinin bir uygulaması olan xml.sax.* modülüdür; bu modül hız ve bellek kullanımı için kolaylıktan ödün vermektedir; SAX ise olay tabanlı bir API'dir; yani çok sayıda belgeyi "havada" tamamen belleğe yüklemek zorunda kalmadan işleyebilir; Üçüncüsü ise xml.etree.ElementTree modülüdür (kısaca ET), hafif bir Python tarzı API sağlar ve DOM'dan çok daha hızlıdır; SAX'a kıyasla kullanılabilecek birçok hoş API vardır; ET'nin ET.iterparse sistemi de "havada" bir işleme yöntemi sunar, tüm belgeyi belleğe yüklemeye gerek yoktur ve ET'nin ortalama performansı SAX'a benzerdir. Ancak API biraz daha verimli ve kullanımı kolay.
2.1 xml.dom.*
Belge Nesne Modeli (DOM), W3C organizasyonu tarafından genişletilebilir işaretleme dillerini işlemek için önerilen standart bir programlama arayüzüdür. Bir DOM ayrıştırıcı bir XML belgesini ayrıştırdığında, tüm belgeyi bir anda okur, belgedeki tüm öğeleri bellekteki bir ağaç yapısına saklar ve ardından DOM tarafından sağlanan farklı işlevleri kullanarak belgenin içeriğini ve yapısını okuyabilir veya değiştirebilir ya da değiştirilmiş içeriği xml dosyasına yazabilirsiniz. Python'da xml.dom.minidom kullanarak xml dosyasını ayrıştırın.
a. Alt etiketler alın b. Aynı etiket adını ayırt eden etiketler c. Etiket öznitelik değerini alın d. Etiket çiftleri arasında veri alın
Çıktı:
2.2 xml.etree.ElementTree
ElementTree, XML işlemek için doğdu ve Python standart kütüphanesinde iki uygulama vardır: biri saf bir Python uygulamasıdır, örneğin xml.etree.ElementTree, diğeri ise daha hızlı bir xml.etree.cElementTree. Not: Bunu uygulamak için C dilini deneyin, çünkü daha hızlıdır ve daha az bellek tüketir.
a. Kök düğümün bir sonraki katmanını geçin b. Bireysel etiketlere, niteliklere ve metne alt indeks erişimi c. Belirtilen etiketi kök altında bulun d. XML dosyalarını dolaşmak e. XML dosyasını değiştirin
Çıktı:
Ekli:
2.3 xml.sax.*
SAX, XML'i iki bölüme ayırmak için SAX kullanan olay odaklı bir API'dir: ayrıştırıcı ve olay işleyici.
Ayrıştırıcı, XML belgesini okumaktan ve olay işleyicisine öğe başlangıcı ve eleman sonu olayları gibi olayları göndermekten sorumludur
Olay işlemcisi, olaylara yanıt vermekten ve gönderilen XML verilerini işlemekten sorumludur
Yaygın senaryolar:
(1) Büyük belgeleri işlemek
(2) Belgenin yalnızca bir kısmı gereklidir veya belirli bilgiler yalnızca dosyadan alınır
(3) Kendi nesne modelimi oluşturmak istiyorum
|