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)

Minidom kullanarak XML Ayrıştırma nasıl yapılır

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.

Minidom kullanarak XML'i ayrıştırma

  • 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.

Minidom kullanarak XML'i ayrıştırma

  • Ç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.

  1. Yeni özelliği (BigData) mevcut XML etiketine eklemek için kod yazmanız gerekir
  2. Daha sonra, XML etiketini, mevcut XML etiketine eklenen yeni niteliklerle yazdırmanız gerekir.

XML Düğümü Yaz

  • 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