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.
- Yeni niteliği (BigData) mevcut XML etiketine eklemek için kodlamalısınız
- 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:
- SQL
- Python
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