VB.Net ile XML kullanımı ve Örnekleri

  • 12.01.2016
  • M.Tayyip Yetiş
  • XML

Merhaba, XML(Genişletilebilir İşaretleme Dili, Extensible Markup Language) günümüzde yazılım dünyası içinde vazgeçilmez bir teknolojidir. Onu böylesi önemli bir konuma ulaştıran ise verileri oldukça hızlı ve pratik olarak modelleyebilmesi ve düzenli bir şekilde saklanabilmesini sağlaması bu özelliğinden dolayı ile de iki farklı sistem arasında ortak dil görevi görüp veri aktarımını kolaylaştırmasıdır. Vikipedia''nın tanımına göre XML, aynı zamanda HTML dilini de tasarlamış olan Tim Berners Lee tarafından tasarlanan ve suan W3C''nin sorumluluğu altında olan bilgi işlem sistemleri tarafından kolayca okunabilecek dokümanlar oluşturmaya yarayan bir standarttır.

Microsoft ürünü olan Office 2007(Excel, Word) yazılımlarının altyapısında XML kullanılır. office 2003 dosya uzantıları .xls .doç iken office 2007 ve sonrasında ise .xlsx veya .docx''dir uzantıların sonundaki x XML dili anlamına gelmektedir. bir diğer XML altyapısını kullanan teknoloji ise AJAX''dir açılımı; Asynchronous JavaScript and XML olan bu teknoloji de javascript teknolojisinin XML ile birleşiminden oluşur. sunucu(server) ile istemci(client) arasındaki veri iletimini kolayca sağlamak için bu teknolojiden yararlanılmaktadır. Bizler için de XML programlama senaryolarındaki büyük sorunlara çözüm olmaktadır. örneğin; birbiriyle bağlantılı veya birbirinin altkümesi olan hiyerarşik verileri Class denilen Nesne yönelimli programlamanın temelini oluşturan yapılar içinde tutulabilirler fakat bu çok karmaşık bir yapı haline gelebilir özellikle bu yapılar içerisinde sorgulama yapmak istediğimizde ise daha büyük bir sorunla karşılaşırız. aynı şeyi XML ile yapmak istesek yapacağımız sadece bu hiyerarşik verileri çok az sayıda .Net kodu kullanarak bir dosyaya yazmak veya hiç yazmadan sadece bellekte bile saklayabiliriz. Sorgulama ise bundan daha kolaydır çünkü temelinde DOM mimarisini kullandığı için HTML kodu içinde sorgu yapmakla hemen hemen aynı yöntemi kullanır.

Bu kadar Teorik bilgiden sonra örneklere geçebiliriz. bu örneğimizde bir e-ticaret sitesinin veritabanına aktarılmak üzere hazırlanan kategori ve ürünleri modelleyen bir XML dosyası göstereceğiz

<?xml version="1.0" encoding="utf-8"?>
<!--Mustafa Tayyip YETİŞ-->
<kategori İD="00342756">
  <adi> Bilgisayar </adi>
  <ustkategoriID> 00056476 </ustkategoriID>
  <detayliarama> True </detayliarama>
</kategori>
<kategori İD="00897626">
  <adi> Ev Aletleri </adi>
  <ustkategoriID> 00021346 </ustkategoriID>
  <detayliarama> False </detayliarama>
</kategori>
<kategori İD="00897626">
  <adi> Ev Cep Telefonları </adi>
  <ustkategoriID> 00556886 </ustkategoriID>
  <detayliarama> False </detayliarama>
</kategori>

XML dilinin genel yapısı bu şekilde HTML''den en önemli farkı belirli etiket(tag)''leri kullanabilmeniz XML''de ise kendi taglarınızı oluşturabilmeniz onu güçlü yapan bie özelliği de budur. şimdi .Net ile bir .xml dosyası oluşturalım. bunun için kullanabileceğimiz 3 farklı sınıf var bunlar. XmlTextWriter, XmlDocument, XmlReader. Aşağıdaki örneği inceleyin.

Dim createXML As New 
XmlTextWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\deneme.xml", UTF8Encoding.UTF8)
createXML.WriteStartDocument()
createXML.WriteComment("batuhanavlayan.com")''XML içine Açıklama satırı ekleme
createXML.WriteStartElement("Arabalar")''Başlangıç etiketimiz
createXML.WriteEndDocument()
createXML.Close()

Dim data As New XmlDocument()
data.Load(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\deneme.xml")

Dim element As XmlElement = data.CreateElement("araba")
element.SetAttribute("item", Guid.NewGuid().ToString())
Dim name Aş XmlElement = data.CreateElement("name")
name.İnnerText = "Mercedes C180"
element.AppendChild(name)

Dim model As XmlElement = data.CreateElement("model")
model.İnnerText = "2013"
element.AppendChild(model)Dim fiyat As XmlElement = data.CreateElement("fiyat")
fiyat.İnnerText = "98.000 TL"
element.AppendChild(fiyat)
data.DocumentElement.AppendChild(element)

Dim write As New XmlTextWriter(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\\deneme.xml", Nothing)
write.Formatting = Formatting.İndented
data.WriteContentTo(write)write.Close()

Bu örnekte ilk 8 satırda XmlTextWriter sınıfını kullanarak ham xml dosyasını oluşturduk. 10. ve 28. satırlar arasında XmlDocument sınıfını kullanarak XML düğümleri oluşturduk. 30. satırdan sonra ise tekrar XmlTextWriter sınıfını kullanarak bu düğümleri .xml dosyasında yazdık. böyle yapmamızın sebebi XmlDocument sınıfı düğüm oluşturmak ve bu düğümler arasında hızlı sorgu yapmak için daha geniş imkanlar sağlaması. XmlReader sınıfında sorgu yapabilmek için ise her sorguda dosyayı baştan sona tekrar okumak gerekiyor. XmlReader ile sorgu örneği aşağıda verilmiştir. bu örnekte While döngüsü kullanılarak XML dosyası içinde kayıtlar tek tek aranmaktadır. myReader sınıfında kullanılan özellikleri internette detaylı arayarak ne anlama geldiğini bulabilirsiniz. İleriki derslerde daha detaylı anlatım yapılacaktır

Dim myReader Aş New XmlTextReader("deneme.xml")
myReader.Read()
While myReader.Read()	
myReader.MoveToElement()	
listBox1.İtems.Add("------------------------------------")                                                                                                                                                                                                                                                         listBox1.İtems.Add(" ATTIRBUTE" & vbTab & vbTab & ": " +                                                                myReader.GetAttribüte("item"))	
listBox1.İtems.Add(" Name" & vbTab & vbTab & ": " + myReader.Name)	
listBox1.İtems.Add(" BaşeURİ" & vbTab & ": " + myReader.BaşeURİ)	
listBox1.İtems.Add(" LocalName" & vbTab & ": " + myReader.LocalName)	
listBox1.İtems.Add(" AttribüteCount" & vbTab & ": " +           myReader.AttribüteCount.ToString())	
listBox1.İtems.Add(" Depth" & vbTab & vbTab & ": " + myReader.Depth.ToString())	
listBox1.İtems.Add(" LineNumber" & vbTab & ": " + myReader.LineNumber.ToString())	
listBox1.İtems.Add(" NodeType" & vbTab & ": " + myReader.NodeType.ToString())	l
istBox1.İtems.Add(" Value" & vbTab & vbTab & ": " + myReader.Value.ToString())
End While

Aşağıdaki örnekte ise XmlDocument nesnesi ve For Each yapısı kullanılarak sorgu yapılmaktadır. örnekteki açıklamada belirtildiği gibi xmlNode değişkeninin özelliklerini kullanarak veri süzmesini yapabilirsiniz. ileriki derslerde ileri düzey sorgulama örnekleri yapılacaktır. Load() fonksiyonu ile XmlDocument nesnesine pc üzerindeki .xml dosyası yüklenir ve üzerinde işlem yapılması sağlanır.

Bu derste XML ile temel dosyaya yazma ve okuma işlemlerini gösterdik. daha ileriki derslerde üst düzey XML işlemleri yapılacak ve XSL, XSD, DTD konularına değineceğiz. soru, görüş ve yorumlarınızı İletişim Sayfasından bana ulaştırabilirsiniz

Herkese faydalı olması dileğiyle

Mustafa Tayyip YETİŞ
Yazılım Geliştirme Uzmanı

Yorum Yap