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!