Fethi Polat 1
Fethi Polat
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
Best Studio 1
Best Studio
Agora Metin2 1
Agora Metin2
raderde 1
raderde
Cannn6161 1
Cannn6161
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Mt2Hizmet 1
Mt2Hizmet
melankolıa18 1
melankolıa18
Hikaye Ekle
Reklam vermek için turkmmo@gmail.com

Altın Konu Python ile XML Ayrıştırma

Nizam-ı Alem

Asalet kana değil, duruşa bakar.
Telefon Numarası Onaylanmış Üye Turkmmo Discord Nitro Booster
Yönetici
Dergi Editörü
Turnuva
Admin
Yarışma
Gold Üye
Gümüş Üye
VIP Üye
Paylaşım
Ayın Üyesi
Katılım
15 May 2013
Konular
1,209
Mesajlar
7,331
Çözüm
6
Online süresi
2mo 16d
Reaksiyon Skoru
5,964
Altın Konu
410
Başarım Puanı
349
MmoLira
2,004
DevLira
6
Ticaret - 0%
0   0   0

ROHAN2 WORLD 1-120 TR TİPİ OFFICIAL YOHARA, BALATHOR VE AMON! 80. GÜNÜNDE! +10.000 ONLİNE! HİLE VE BOT %100 ENGELLİ HEMEN TIKLA!

1776026816053.png


Dahili 'ElementTree' Modülü
Python'da XML dosyalarını ayrıştırıp verileri Python nesnelerine kaydedebilen birçok modül bulunmaktadır. Bu örnekte, dahili "ElementTree" modülünü kullanacağız. Bu modül, XML dosyalarını (ve benzer yapıdaki diğer dosyaları) okuma ve işleme işlevlerine sahiptir. 2. dersteki şu örnekle çalışacağız:

Kod:
<?xml version="1.0" encoding="UTF-8"?>
<interfaces>

  <interface id="1">
    <name>GigabitEthernet0/0/1</name>
    <description >VLAN20</description>
    <address>10.1.1.1</address>
    <mask>255.255.255.0</mask>
    <MTU>1400</MTU>
    <duplex>full</duplex>
    <speed>1000</speed>
  </interface>

  <interface id="2">
    <name>GigabitEthernet0/0/2</name>
    <description >VLAN20</description>
    <address>192.168.1.1</address>
    <mask>255.255.255.128</mask>
    <MTU>1500</MTU>
    <duplex>full</duplex>
    <speed>1000</speed>
  </interface>

  <interface id="3">
    <name>GigabitEthernet0/0/3</name>
    <description >VLAN20</description>
    <address>172.16.5.1</address>
    <mask>255.255.255.192</mask>
    <MTU>1514</MTU>
    <duplex>full</duplex>
    <speed>100</speed>
  </interface>

</interfaces>

Başlamadan önce, dosyayı Python çalışma dizinimizde interfaces.xml olarak kaydetmeliyiz. Ardından ElementTree kütüphanesini içe aktarıyoruz. ET takma adını kullanmak yaygın bir uygulamadır:

Kod:
import xml.etree.ElementTree as ET

XML Verilerinin Ayrıştırılması
Sağlanan XML dosyasında, temel bir arayüz koleksiyonu bulunmaktadır. Her arayüzün farklı bir IP adresi ve diğer yapılandırma parametreleri vardır. Bu dersin ana amacı, dosyayı Python ile okumak ve anlamaktır.

Öncelikle, dosyayı ElementTree ile okumamız gerekiyor.

Kod:
xml = ET.parse('interfaces.xml')
root = xml.getroot()

Ardından, nesneyi yazdırdığımızda, belirtilen bellek adresinde bir 'ElementTree' nesnesi olduğunu görebiliriz:

Kod:
>>> print(xml)
<xml.etree.ElementTree.ElementTree object at 0x0364AEE0>

Veriler bir Python nesnesi olarak yüklendikten sonra, mevcut yerleşik yöntemler ve öznitelikler kullanılarak okunabilir veya işlenebilir. Bunları 'dir()' yöntemiyle görebiliriz:

Kod:
>>> print(dir(xml))
['__class__', '__delattr__', '__dict__',
'__dir__', '__doc__', '__eq__',
'__format__', '__ge__',
'__getattribute__', '__gt__',
'__hash__', '__init__', '__init_subclass__',
'__le__', '__lt__',
'__module__', '__ne__', '__new__',
'__reduce__', '__reduce_ex__',
'__repr__', '__setattr__', '__sizeof__',
'__str__', '__subclasshook__', '__weakref__',
'_root', '_setroot', 'find', 'findall', 'findtext',
'getiterator', 'getroot', 'iter', 'iterfind',
'parse', 'write', 'write_c14n']

Şimdi 'iterfind()' yöntemini kullanarak, for döngüsü içinde yineleme yapabileceğimiz bir üreteç döndürelim.

Kod:
>>> for item in xml.iterfind('interface'):
...         print(item)
   
<Element 'interface' at 0x03D265C8>
<Element 'interface' at 0x03D47CD0>
<Element 'interface' at 0x03D47E60>

Çeşitli bellek adreslerinde depolanmış birkaç ‘arayüz’ nesnemiz olduğunu görüyoruz. Bu nesnelerden bilgileri ‘findtext()’ yöntemini kullanarak çıkarabiliriz. ‘Adres’ etiketlerindeki bilgileri çıkaralım:

Kod:
for item in xml.iterfind('interface'):
...     print(item.findtext('address'))

10.1.1.1
192.168.1.1
172.16.5.1

Arayüz adını da ele alalım:

Özetlemek gerekirse, bu derste Python'daki yerleşik 'ElementTree' kütüphanesini kullanarak XML verilerini nasıl ayrıştıracağımızı gördük. Bir for döngüsü içinde üzerinde yineleme yapabileceğimiz bir jeneratör nesnesi tanımlamak için 'iterfind()' yöntemini nasıl kullanacağımızı gördük. Ayrıca 'findtext()' yöntemini kullanarak öğe etiket bilgilerine nasıl erişeceğimizi de gösterdik.​
 

Ekli dosyalar

  • 0 bayt · Görüntüleme: 0
Son düzenleme:
Eline sağlık :)
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst