Giriş
Temel programlama işlemleri dışında, Ruby ile daha üst seviyeli işlemleri yapmak da oldukça kolaydır. Bu yazıda kısaca Ruby ile XML dosyalarıyla nasıl çalışılabileceğini göreceğiz. Başlamadan önce “nokogiri” paketini yükleyelim, bu sayede rahatlıkla XML dosyaları ile çalışabileceğiz:
gem install nokogiri
Yeni Bir XML Dosyası Oluşturmak
XML dosyaları ile çalışmaya başlamadan önce dosyamızı oluşturalım. Aslında doğrudan bir XML dosyası ele alınabilirdi, ama bu da güzel bir örnek olacaktır:
# Eklenecek Kütüphaneler require 'rubygems' require 'nokogiri' # Yeni bir XML ağacı oluşturalım xml_dosyasi = Nokogiri::XML::Builder.new do |xml| # "veriler"i tanımlayalım xml.veriler { # "veriler" içerisinde "veri" tanımlayalım xml.veri(:id => "1", :ad => "veri1", :deger => "1111") xml.veri(:id => "2", :ad => "veri2", :deger => "2222") xml.veri(:id => "3", :ad => "veri3", :deger => "3333") } end # XML'i dosyaya kaydedelim File.write("deneme.xml", xml_dosyasi.to_xml)
Kodu çalıştırdıktan sonra “deneme.xml” dosyasının aşağıdaki içerikle oluştuğunu göreceksiniz:
<?xml version="1.0"?> <veriler> <veri id="1" ad="veri1" deger="1111"/> <veri id="2" ad="veri2" deger="2222"/> <veri id="3" ad="veri3" deger="3333"/> </veriler>
XML Dosyası Okuma ve Belirli Verileri Seçme
Az önce oluşturduğumuz XML dosyasını okuyup dosyadan bilgi çekmenin nasıl yapıldığını görelim:
# Eklenecek Kütüphaneler require 'rubygems' require 'nokogiri' # XML dosyamızı açalım xml_dosyasi = Nokogiri::XML(File.open("deneme.xml")) do |config| config.strict end # "veri"leri seçelim ve id'si 2 olan girdiyi ekrana basalım veri_girisleri = xml_dosyasi.search("veri") veri_girisleri.each do |veri| if veri['id'] == "2" puts veri['id'] + " " + veri['ad'] + " " + veri['deger'] end end # İşimiz bitti exit
Bu kadar basit.
XML Dosyasını Güncelleme
Şimdi de az önce bulduğumuz id değeri 2 olan girişin değerini 2222‘den 1234‘e çevirip XML dosyamızı kaydedelim.
# Eklenecek Kütüphaneler require 'rubygems' require 'nokogiri' # XML dosyamızı açalım xml_dosyasi = Nokogiri::XML(File.open("deneme.xml")) do |config| config.strict end # "veri"leri seçelim ve id'si 2 olan girdiyi ekrana basalım veri_girisleri = xml_dosyasi.search("veri") veri_girisleri.each do |veri| if veri['id'] == "2" veri['deger'] = "1234" end end # XML'i dosyaya kaydedelim File.write("deneme.xml", xml_dosyasi.to_xml)
“deneme.xml” dosyasını herhangi bir text editöründe açıp kontrol edebilirsiniz.
XML Dosyasına Yeni Girdi Ekleme
Bu örnekte id‘si 4 olan bir veri nesnesini id‘si 2 ve 3 olan nesneler arasına ekleyelim:
# Eklenecek Kütüphaneler require 'rubygems' require 'nokogiri' # XML dosyamızı açalım xml_dosyasi = Nokogiri::XML(File.open("deneme.xml")) do |config| config.strict end # "veri" nesnelerinin hespini veriler nesnemize XML'den çekelim veriler = xml_dosyasi.root.children.select(&:element?) # Ekleyeceğimiz nesneyi oluşturalım veri_yeni = Nokogiri::XML::Node.new "veri", xml_dosyasi veri_yeni['id']="4" veri_yeni['ad']="veri4" veri_yeni['deger']="4444" # "veri"ler içerisinde gezinip id'si 2 olan nesneyi bulalım veriler.each do |veri| if veri['id'] == "2" # Nesneyi id=2'den sonraki nesneye ekleyelim veri.add_next_sibling(veri_yeni) end end # XML'i dosyaya kaydedelim File.write("deneme.xml", xml_dosyasi.to_xml)
Sonuç
XML dosyalarıyla yapılabilecek temel işlemleri gördük, umarım işinize yarar!
Bir cevap yazın
Yorum yapabilmek için giriş yapmalısınız.