Python XML Ayrıştırıcı Eğitimi: xml dosyası örneğini okuyun (Minidom, ElementTree)

İçindekiler:

Anonim

XML nedir?

XML, Genişletilebilir Biçimlendirme Dili anlamına gelir. Küçük ila orta büyüklükteki verileri depolamak ve taşımak için tasarlanmıştır ve yapılandırılmış bilgileri paylaşmak için yaygın olarak kullanılır.

Python, XML belgesini ayrıştırmanızı ve değiştirmenizi sağlar. XML belgesini ayrıştırmak için tüm XML belgesinin bellekte olması gerekir. Bu eğitimde, XML dosyasını yüklemek ve ayrıştırmak için Python'da XML minidom sınıfını nasıl kullanabileceğimizi göreceğiz.

Bu eğitimde öğreneceğiz-

  • Minidom kullanarak XML nasıl ayrıştırılır
  • XML Düğümü Nasıl Oluşturulur
  • ElementTree kullanarak XML nasıl ayrıştırılır

Minidom kullanarak XML nasıl ayrıştırılır

Ayrıştıracağımız örnek bir XML dosyası oluşturduk.

Adım 1) Dosyanın içinde ad, soyad, ev ve uzmanlık alanını görebiliriz (SQL, Python, Test ve İş)

Adım 2) biz belgeyi ayrıştırıldı ettikten sonra, çıktısını olacak "düğüm adı" belgenin kökü ve "nin firstChild tagName" . Tagname ve nodename, XML dosyasının standart özellikleridir.

  • Xml.dom.minidom modülünü içe aktarın ve ayrıştırılması gereken dosyayı bildirin (myxml.xml)
  • Bu dosya, çalışan hakkında adı, soyadı, evi, uzmanlığı vb. Gibi bazı temel bilgileri içerir.
  • XML dosyasını yüklemek ve ayrıştırmak için XML mini sunucusundaki ayrıştırma işlevini kullanıyoruz
  • Değişken doc'a sahibiz ve doc ayrıştırma fonksiyonunun sonucunu alıyor
  • Düğüm adını ve alt etiket adını dosyadan yazdırmak istiyoruz, bu yüzden onu yazdırma işlevinde bildiriyoruz
  • Kodu çalıştırın - XML ​​dosyasından düğüm adını (# belge) ve XML dosyasından ilk alt etiket adını (çalışan) yazdırır

Not :

Düğüm adı ve alt etiket adı, bir XML etki alanının standart adları veya özellikleridir. Bu tür adlandırma kurallarına aşina değilseniz.

Adım 3) XML belgesinden XML etiketlerinin listesini de çağırabilir ve yazdırabiliriz. Burada SQL, Python, Test ve İş gibi bir dizi beceriyi yazdırdık.

  • Çalışanın sahip olduğu tüm uzmanlık adını çıkaracağımız değişken uzmanlığı beyan edin
  • "GetElementsByTagName" adlı dom standart işlevini kullanın
  • Bu, beceri adlı tüm öğeleri alacaktır.
  • Beceri etiketlerinin her birinin üzerinde döngü bildirin
  • Kodu çalıştırın - Dört becerinin listesini verecektir

XML Düğümü Nasıl Oluşturulur

"CreateElement" fonksiyonunu kullanarak yeni bir nitelik oluşturabilir ve ardından bu yeni niteliği veya etiketi mevcut XML etiketlerine ekleyebiliriz. XML dosyamıza yeni bir "BigData" etiketi ekledik.

  1. Yeni niteliği (BigData) mevcut XML etiketine eklemek için kodlamalısınız
  2. Ardından, mevcut XML etiketiyle eklenen yeni niteliklerle XML etiketini yazdırmanız gerekir.
  • Yeni bir XML eklemek ve bunu belgeye eklemek için "doc.create elements" kodunu kullanıyoruz
  • Bu kod, yeni özniteliğimiz "Büyük veri" için yeni bir beceri etiketi oluşturacaktır.
  • Bu beceri etiketini belgeye ilk çocuk (çalışan) ekleyin
  • Kodu çalıştırın - yeni "büyük veri" etiketi diğer uzmanlık listesiyle birlikte görünecektir

XML Ayrıştırıcı Örneği

Python 2 Örneği

xml.dom.minidom'u içe aktardef main ():# XML dosyasını yüklemek ve ayrıştırmak için parse () işlevini kullanındoc = xml.dom.minidom.parse ("Myxml.xml");# belge düğümünü ve ilk alt etiketin adını yazdırındoc.nodeName yazdırprint doc.firstChild.tagName# belgeden XML etiketlerinin bir listesini alın ve her birini yazdırınuzmanlık = doc.getElementsByTagName ("uzmanlık")"% d uzmanlık:"% uzmanlık.length yazdıruzmanlık becerisi için:print skill.getAttribute ("ad")# yeni bir XML etiketi oluşturun ve bunu belgeye ekleyinnewexpertise = doc.createElement ("uzmanlık")newexpertise.setAttribute ("ad", "Büyük Veri")doc.firstChild.appendChild (yeni uzmanlık)Yazdır " "uzmanlık = doc.getElementsByTagName ("uzmanlık")"% d uzmanlık:"% uzmanlık.length yazdıruzmanlık becerisi için:print skill.getAttribute ("ad")isim == "__main__" ise:ana();

Python 3 Örneği

xml.dom.minidom'u içe aktardef main ():# XML dosyasını yüklemek ve ayrıştırmak için parse () işlevini kullanındoc = xml.dom.minidom.parse ("Myxml.xml");# belge düğümünü ve ilk alt etiketin adını yazdırınbaskı (doc.nodeName)baskı (doc.firstChild.tagName)# belgeden XML etiketlerinin bir listesini alın ve her birini yazdırınuzmanlık = doc.getElementsByTagName ("uzmanlık")baskı ("% d uzmanlık:"% uzmanlık.length)uzmanlık becerisi için:baskı (beceri.getAttribute ("ad"))# yeni bir XML etiketi oluşturun ve bunu belgeye ekleyinnewexpertise = doc.createElement ("uzmanlık")newexpertise.setAttribute ("ad", "Büyük Veri")doc.firstChild.appendChild (yeni uzmanlık)Yazdır (" ")uzmanlık = doc.getElementsByTagName ("uzmanlık")baskı ("% d uzmanlık:"% uzmanlık.length)uzmanlık becerisi için:baskı (beceri.getAttribute ("ad"))__name__ == "__main__" ise:ana();

ElementTree kullanarak XML nasıl ayrıştırılır

ElementTree, XML'i işlemek için bir API'dir. ElementTree, XML dosyalarını işlemenin kolay yoludur.

Örnek veri olarak aşağıdaki XML belgesini kullanıyoruz:

SQLPython

ElementTree kullanarak XML okuma:

önce xml.etree.ElementTree modülünü içe aktarmalıyız.

import xml.etree.ElementTree as ET

Şimdi kök öğeyi getirelim:

root = tree.getroot()

Yukarıdaki xml verilerini okumak için tam kod aşağıdadır

import xml.etree.ElementTree as ETtree = ET.parse('items.xml')root = tree.getroot()# all items dataprint('Expertise Data:')for elem in root:for subelem in elem:print(subelem.text)
çıktı:
Expertise Data:SQLPython

Özet:

Python, tek seferde yalnızca bir satır değil, tüm XML belgesini tek seferde ayrıştırmanıza olanak tanır. XML belgesini ayrıştırmak için tüm belgenin bellekte olması gerekir.

  • XML belgesini ayrıştırmak için
    • Xml.dom.minidom'u içe aktar
    • Belgeyi ayrıştırmak için "ayrıştırma" işlevini kullanın (doc = xml.dom.minidom.parse (dosya adı);
    • (= Doc.getElementsByTagName ("xml etiketlerinin adı") kullanarak XML belgesindeki XML etiketlerinin listesini çağırın
  • XML belgesinde yeni nitelik oluşturmak ve eklemek için
    • "CreateElement" işlevini kullanın