Hikayeler

Reklam vermek için turkmmo@gmail.com

XML Belge Nesne Modeli (DOM)

Nizam-ı Alem

Malato psichico
Telefon Numarası Onaylanmış Üye Turkmmo Discord Nitro Booster
Yönetici
Dergi Editörü
Turnuva
Admin
Yarışma
Gümüş Üye
VIP Üye
Paylaşım
Ayın Üyesi
Altın Üye
Katılım
15 May 2013
Konular
972
Mesajlar
6,656
Online süresi
2ay 11g
Reaksiyon Skoru
5,350
Altın Konu
314
Başarım Puanı
319
TM Yaşı
12 Yıl 11 Ay 12 Gün
MmoLira
22,230
DevLira
15

Metin2 EP, Valorant VP dahil tüm oyun ürünlerini en uygun fiyatlarla bulabilir, Item ve Karakterlerinizi hızlıca satabilirsiniz. HEMEN TIKLA!

XML'in, bilgileri yapılandırılmış bir şekilde depolamak ve göndermek/almak için kullanılan düz metin bir veri formatı olduğunu gördük. Ancak, XML belgesi statik veri değildir. Birçok kez bir XML dosyasından bilgi okumanız, değiştirmeniz veya çıkarmanız gerekecektir. Peki bunu nasıl yaparsınız? Programlar XML içeriğiyle nasıl çalışır? İşte burada XML Belge Nesne Modeli (DOM) devreye giriyor.

Neden XML DOM'a ihtiyacımız var?

Belge Nesne Modeli (DOM), bir XML belgesini mantıksal bir ağaç yapısı olarak temsil eder. Bu, ağaca programatik erişime olanak tanır ve programlama dillerinin bir belgenin yapısını veya içeriğini aramasını ve değiştirmesini sağlar.

Örnek olarak kullanacağımız aşağıdaki XML belgesine bakalım. Belge sadece düz metindir. Peki bir Python betiğine arayüzün IP adresini 10.1.1.1'den 192.168.1.1'e değiştirmesini nasıl söylersiniz? Belgeyi, metin dosyalarını düzenlediğiniz gibi düz metin olarak mı düzenlersiniz?

Kod:
<?xml version="1.0" encoding="UTF-8"?>
<interfaces>
  <interface name="GigabitEthernet0/0">
    <ipAddress>10.1.1.1</ipAddress>
    <netMask>255.255.255.0</netMask>
    <speed>1000</speed>
    <duplex>full</duplex>     
  </interface>
  ...
</interfaces>

Elbette, XML dosyalarını düz metin gibi düzenleyemezsiniz; bilgisayarda metin yazarken karakterleri tek tek silip değiştiremezsiniz. XML dosyaları yapı, iç içe geçme ve sözdizimi için katı kurallara uyar. Küçük bir hata – bir etiketi silmek veya bir tırnak işaretini yanlış yere koymak gibi – tüm dosyayı geçersiz kılabilir. XML okuyan programlar verilerin düzgün biçimlendirilmiş olmasını gerektirir, bu nedenle bozuk bir yapıyla çalışamazlar.

İşte bu yüzden DOM'u (Belge Nesne Modeli) kullanıyoruz.

DOM, XML dosyasını yapıyı bozulmadan koruyan bir nesne ağacına dönüştürür. Her öğe, öznitelik ve metin, bir programın güvenle okuyabileceği, değiştirebileceği veya silebileceği bir düğüm haline gelir. Örneğin, aşağıdaki diyagram yukarıda kullandığımız XML belgesini bir ağaç olarak temsil etmektedir. Bilgilerin aynı olduğunu ancak ağaç yapısı olarak temsil edildiğini fark edin.

1775759821323.png


Program, düz metni düzenlemek yerine DOM ağacı üzerinden çalışır. Bu, tüm öğelerin düzgün bir şekilde iç içe geçmesini ve XML'in herhangi bir değişiklikten sonra geçerli kalmasını sağlar.

Bilinmeyen yapıya sahip büyük XML dosyalarıyla çalışma
Belge Nesne Modeli'ne (DOM) neden ihtiyaç duyduğumuzu gerçekten anlamak için, aşağıda gösterilen örneği ele alalım. Bir yönlendiricinin Gig0/1 IP adresini, yönlendiricinin tüm yapılandırmasını XML formatında okuyan bir Python betiği kullanarak çıkarmak istediğinizi hayal edelim (ki bu pratikte mümkündür). Ancak, belge yapısını bilmiyorsunuz. Etiketleri ve arayüz IP adresi öğesinin belgede ne kadar derin olduğunu bilmiyorsunuz. İstediğiniz kesin bilgilere nasıl ulaşabilirsiniz?

1775759840590.png


DOM ağacı olmadan, tek seçeneğiniz tüm yönlendirici yapılandırmasını XML formatında indirmek ve ihtiyacınız olan bilgiyi bulmak için belgeyi manuel olarak incelemektir. Ancak belge çok büyük ve burada manuel çalışmadan bahsediyoruz. Ağ otomasyonu bağlamında, istediğiniz şey bu değil, değil mi?

Şimdi aşağıdaki animasyonlu örneği ele alalım. Belge Nesne Modeli (DOM), XML belgelerine erişmek ve bunları işlemek için platformlar arası ve dilden bağımsız bir programlama arayüzüdür. Python kullanarak ağaçta gezinebilir ve ihtiyacınız olan bilgiyi bulabilirsiniz. Tüm belge yapısını bilmenize gerek yok.

why-do-we-need-the-xml-dom-animation.gif


Unutmayın ki bu örnek basitleştirilmiş ve abartılmıştır. Öncelikle DOM ağacına neden ihtiyaç duyduğumuzu göstermek için tasarlanmıştır.

Kısacası, bir XML belgesini DOM ağacı olarak temsil etmek aşağıdaki nedenlerden dolayı çok faydalıdır:

Yapılandırılmış erişim = XML dosyasını, arama ve değiştirmeyi kolaylaştıran yapılandırılmış bir ağaca dönüştürür.

Dil bağımsızlığı = DOM standart bir arayüzdür. Birçok programlama dilinde aynı şekilde çalışır.

Dinamik güncellemeler = XML belgesinin bölümlerini tüm dosyayı yeniden yüklemeden değiştirebilirsiniz.

Otomasyon = Birçok ağ yönetim sistemi XML tabanlı API'ler kullanır. DOM, cihaz yapılandırmasını otomatik olarak ayrıştırmayı ve değiştirmeyi mümkün kılar.

Programlar, XML'i düz metin olarak ele almak yerine, yukarıdaki animasyonda gösterildiği gibi, arama, değiştirme ve tekrar kaydetmeyi kolaylaştıran yapılandırılmış bir veri modeli gibi işlemek için DOM'u kullanır.

Belge Nesne Modeli nasıl çalışır?

XML Belge Nesne Modelinin (DOM) çalışma prensibini üç ana fonksiyonda özetleyebiliriz:

Fonksiyon 1: XML metnini okur ve düğüm ağacına dönüştürür.

Fonksiyon 2: Programların öğeler arasında güvenli bir şekilde gezinmesini, okumasını ve düzenlemesini sağlar.

Fonksiyon 3: XML yapısını doğru ve tutarlı tutar.

Basit bir örnek kullanarak her bir fonksiyonu daha ayrıntılı olarak inceleyelim.

Düğümler
Öncelikle, XML Belge Nesne Modelinin bir XML belgesindeki her şeyi bir düğüme dönüştürdüğünü hatırlayalım:

Tüm belge bir belge düğümüdür
Her XML öğesi bir öğe düğümüdür
XML öğelerindeki metin metin düğümleridir
Her öznitelik bir öznitelik düğümüdür
Yorumlar yorum düğümleridir
DOM, XML metnini ayrıştırır
Aşağıdaki XML düz metnine sahip olduğumuzu varsayalım. Bunun iki arayüzü temsil ettiğine dikkat edin - GigabitEthernet0/0 ve FastEthernet0/1/0.

Kod:
<?xml version="1.0" encoding="UTF-8"?>
<interfaces>
  <interface name="GigabitEthernet0/0">
    <ipAddress>10.1.1.1</ipAddress>
    <netMask>255.255.255.0</netMask>
    <speed>1000</speed>
    <duplex>full</duplex>     
  </interface>
  <interface name="FastEthernet0/1/0">
    <ipAddress>192.168.1.1</ipAddress>
    <netMask>255.255.255.0</netMask>
    <speed>100</speed>
    <duplex>full</duplex>     
  </interface>
</interfaces>

Bir program bu XML dosyasını bir DOM ayrıştırıcısı ile yüklediğinde, metni okur ve bellekte şu şekilde görünen bir ağaç yapısı oluşturur:

Kod:
interfaces
 ├── interface (name="GigabitEthernet0/0")
 │     ├── ipAddress: 10.1.1.1
 │     ├── netMask: 255.255.255.0
 │     ├── speed: 1000
 │     └── duplex: full
 │
 └── interface (name="FastEthernet0/1/0")
       ├── ipAddress: 192.168.1.1
       ├── netMask: 255.255.255.0
       ├── speed: 100
       └── duplex: full

DOM ağacını kullanma
Ağaç oluşturulduktan sonra, program ağaç içinde hareket edebilir. Ebeveynden çocuğa, bir düğümden diğerine gidebilir veya herhangi bir öğeden veri okuyabilir. Örneğin, Python'ın dom modülünü kullanarak, aşağıdaki kod bloğunda gösterildiği gibi belgeyi ayrıştırabilirsiniz:

Kod:
# Import the minidom module from Python's XML library
from xml.dom import minidom


# Parse (read) the XML file and load it into a DOM object
doc = minidom.parse("interfaces.xml")


# Get the root element of the XML document (the top-level tag)
root = doc.documentElement

Ardından aşağıdaki kodu kullanarak tüm arayüz öğelerini listeleyebilirsiniz:

Kod:
# finds all <interface> elements
interfaces = doc.getElementsByTagName("interface")


# reads the name attribute
for i in interfaces:
    print("Interface:", i.getAttribute("name"))

Çıktı şu şekildeydi:

Kod:
Interface: GigabitEthernet0/0
Interface: FastEthernet0/1/0

DOM, XML dosyanızı programınızın kolayca gezinebileceği ve düzenleyebileceği bir nesne ağacına dönüştürür; bu işlem yapıyı bozmaz.

Özellikler ve Metotlar
Python gibi bir programlama dili bir XML belgesini DOM ağacına dönüştürdüğünde, XML belgesindeki her şey bir düğüm olarak ele alınır. Ardından her düğümün bazı özellikleri ve metotları bulunur.

Her nesnenin, programların XML dosyasının bölümlerini okumasına, değiştirmesine veya kontrol etmesine olanak tanıyan özellikleri ve metotları vardır.

Özellikler nelerdir?
Özellikler, bir XML düğümü hakkında bir şey tanımlar; örneğin adı, türü veya değeri. Bunları belgeden bilgi almak için kullanabilirsiniz. Bir özelliği, bir düğüme ait bir değişken olarak düşünün. Aşağıdaki kısa XML belgesini örnek olarak kullanalım.

Kod:
<interface name="GigabitEthernet0/0">
  <ipAddress>10.1.1.1</ipAddress>
</interface>

Bir Python programı bu XML'i ayrıştırdığında, her şeyi bir düğüme dönüştürür. Aşağıdaki tabloda, her düğüm için kullanılabilen yaygın XML DOM özelliklerinin bir listesi gösterilmektedir.

1775760047198.png


Özellikler genellikle "VAR OLAN" bir şey olarak adlandırılır (örneğin, arayüz adı "Gig0/0").

Metotlar nedir?

Metotlar, XML düğümlerinde gerçekleştirebileceğiniz eylemlerdir. DOM ağacında öğeleri bulmanıza, oluşturmanıza, eklemenize veya silmenize olanak tanırlar.

Bir metodu, bir düğüme ait bir fonksiyon olarak düşünün. Aynı XML belgesini örnek olarak alırsak, aşağıdaki tablo her düğüm için mevcut metotları göstermektedir.

1775760076258.png


Özellikler düğümleri tanımlar (ad, değer, tür, ilişkiler).
Metotlar eylemleri gerçekleştirir (düğümleri bulma, okuma, oluşturma, değiştirme veya kaldırma).

Birlikte, XML belgelerini güvenli ve yapılandırılmış bir şekilde okumanıza ve kontrol etmenize olanak tanırlar.

XML DOM ile programınız sadece XML metnini okumakla kalmaz, aynı zamanda canlı bir veri yapısı gibi onunla çalışır; bilgi almak için özellikleri ve değişiklik yapmak için metotları kullanır.

Önemli Noktalar
XML DOM, düz XML metnini programların güvenli bir şekilde okuyup düzenleyebileceği bir düğüm ağacına dönüştürür.
Bir XML belgesinin her bir parçası (öğeler, metin, öznitelikler) DOM ağacında bir düğüm haline gelir.
DOM, programların XML'de üstten alta veya kardeş düğümler arasında gezinmesine olanak tanır. Yapısını bilmediğiniz büyük bir XML belgesinde gezinmenizi sağlar.
DOM kullanarak, yapıyı veya sözdizimini bozmadan XML içeriğini değiştirebilirsiniz.
DOM dilden bağımsızdır, yani Python, Java veya JavaScript'te aynı şekilde çalışır.

Özellikler, etiket adı, türü veya değeri gibi düğüm özelliklerini tanımlar.
Metotlar, düğümleri bulma, oluşturma, değiştirme veya silme gibi eylemleri gerçekleştirir.

Kısacası, XML DOM, XML dosyaları ve programlar arasında köprü görevi görerek otomasyonu mümkün kılar.​
 
Eline sağlık
 

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

Geri
Üst