Python XML Dosyası – Nasıl Okunur, Yazılır ve Ayrıştırılır
XML nedir?
XML, Genişletilebilir İşaretleme Dili anlamına gelir. Küçük ve orta miktarlardaki verileri depolamak ve taşımak için tasarlanmıştır ve yapılandırılmış bilgilerin paylaşımında yaygın olarak kullanılır.
Python XML belgelerini ayrıştırmanıza ve değiştirmenize olanak sağlar. XML belgesini ayrıştırmak için XML belgesinin tamamının bellekte olması gerekir. Bu dersimizde XML minidom sınıfını nasıl kullanabileceğimizi göreceğiz. Python XML dosyalarını yüklemek ve ayrıştırmak için.
Minidom kullanarak XML Ayrıştırma nasıl yapılır
Ayrıştıracağımız örnek bir XML dosyası oluşturduk.
Adım 1) Örnek XML dosyası oluşturun
Dosyanın içinde adınızı, soyadınızı, evinizi ve uzmanlık alanınızı (SQL, Python, Test ve İşletme)
Adım 2) XML dosyasını yüklemek ve ayrıştırmak için ayrıştırma işlevini kullanın
Belgeyi ayrıştırdıktan sonra çıktısını alacağız “düğüm adı” belgenin kökü ve “ilk çocuk etiket adı”. Etiket adı ve düğüm adı 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, bir çalışanın adı, soyadı, evi, uzmanlık alanı vb. gibi bazı temel bilgileri içerir.
- XML dosyasını yüklemek ve ayrıştırmak için XML minidomundaki ayrıştırma işlevini kullanıyoruz
- Doc değişkenimiz var 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 bunu print fonksiyonunda bildiriyoruz.
- Kodu çalıştırın - XML dosyasından düğüm adını (#document) ve XML dosyasından ilk alt etiket adını (çalışan) yazdırır.
not:
Düğüm adı ve alt etiket adı, bir XML dom'un standart adları veya özellikleridir.
Adım 3) XML belgesinden XML etiketlerinin listesini çağırın ve yazdırın
Daha sonra, XML belgesinden XML etiketlerinin listesini de çağırabilir ve yazdırabiliriz. Burada SQL gibi becerilerin çıktısını aldık, Python, Test yapmak ve İşletme.
- Çalışanın sahip olduğu tüm uzmanlığı çıkaracağımız değişken uzmanlığı bildirin
- “getElementsByTagName” adlı dom standart işlevini kullanın
- Bu, beceri adı verilen tüm unsurları elde edecek
- Beceri etiketlerinin her biri üzerinde döngü bildirin
- Kodu çalıştırın - Dört becerinin listesini verecektir
XML Düğümü Nasıl Yazılır
“createElement” fonksiyonunu kullanarak yeni bir nitelik oluşturabilir ve daha sonra bu yeni niteliği veya etiketi mevcut XML etiketlerine ekleyebiliriz. XML dosyamıza yeni bir “BigData” etiketi ekledik.
- Yeni özelliği (BigData) mevcut XML etiketine eklemek için kod yazmanız gerekir
- Daha sonra, XML etiketini, mevcut XML etiketine eklenen yeni niteliklerle yazdırmanız gerekir.
- Yeni bir XML eklemek ve belgeye eklemek için “doc.create elements” kodunu kullanıyoruz.
- Bu kod, yeni özelliğimiz olan "Büyük Veri" için yeni bir beceri etiketi oluşturacaktır.
- Bu beceri etiketini belgenin ilk çocuğuna (çalışan) ekleyin
- Kodu çalıştırın; diğer uzmanlık listesiyle birlikte yeni "büyük veri" etiketi görünecektir
XML Ayrıştırıcı Örneği
Python 2 Örnek
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print doc.nodeName print doc.firstChild.tagName # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") #Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print " " expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") if name == "__main__": main();
Python 3 Örnek
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print (doc.nodeName) print (doc.firstChild.tagName) # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) # Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print (" ") expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) if __name__ == "__main__": main();
ElementTree kullanarak XML Ayrıştırma
ElementTree, XML'i işlemeye yönelik bir API'dir. ElementTree, XML dosyalarını işlemenin kolay yoludur.
Örnek veri olarak aşağıdaki XML belgesini kullanıyoruz:
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
ElementTree kullanarak XML okuma:
öncelikle xml.etree.ElementTree modülünü içe aktarmalıyız.
import xml.etree.ElementTree as ET
Şimdi kök elemanı getirelim:
root = tree.getroot()
Yukarıdaki xml verilerini okumak için tam kod aşağıdadır
import xml.etree.ElementTree as ET tree = ET.parse('items.xml') root = tree.getroot() # all items data print('Expertise Data:') for elem in root: for subelem in elem: print(subelem.text)
çıktı:
Expertise Data: SQL Python
ÖZET
Python XML belgesinin tamamını tek seferde ayrıştırmanıza olanak tanır, tek seferde yalnızca bir satır değil. XML belgesini ayrıştırmak için belgenin tamamının bellekte olması gerekir.
- XML belgesini ayrıştırmak için
- Xml.dom.minidom'u içe aktar
- Belgeyi ayrıştırmak için “parse” fonksiyonunu kullanın ( doc=xml.dom.minidom.parse (dosya adı);
- (=doc.getElementsByTagName( “xml etiketlerinin adı”) kodunu kullanarak XML belgesinden XML etiketleri listesini çağırın
- XML belgesinde yeni nitelik oluşturmak ve eklemek için
- “createElement” fonksiyonunu kullanın