- Katılım
- 15 May 2013
- Konular
- 1,207
- Mesajlar
- 7,321
- Çözüm
- 6
- Online süresi
- 2mo 16d
- Reaksiyon Skoru
- 5,958
- Altın Konu
- 410
- Başarım Puanı
- 349
- MmoLira
- 45,963
- DevLira
- 3
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!
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
Son düzenleme:










