Resim vs. olmadığı için bu sıralar boşladığım blogda da yayınlamak istedim. Umarım beğenirsiniz. =)
Merhaba arkadaşlar. Bu makalemizde XmlTextReader'ın kullanımını göreceğiz.
XmlTextReader, Xml dosyasını okur. [Tek yol tabi ki değildir(Ör:XPath). ] Hızlı bir şekilde, baştan sona kadar tek tek okur. Kullanım ihtiyacına göre yararlı da zararlı da olacağı yerler vardır.
Bir proje açalım. Bu projeye bir Xml File ekleyin (İsmi aynen kalabilir, önemli değil). XmlFile1'in içine
yazalım. Gördüğünüz üzere basit bir Xml dosyası oluşturduk.(
Şimdi bu dosyadan okuma yapacağız. İsterseniz kodumu baştan vereyim ve direkt üzerinden anlatayım.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
namespace XMLIntro
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
XmlTextReader reader = new XmlTextReader(@"..\..\XMLFile1.xml");
TreeNode tndunya = new TreeNode();
tndunya.Text = "dunya";
treeView1.Nodes.Add(tndunya);
TreeNode tnKita = null;
TreeNode tnUlke = null;
TreeNode tnIl = null;
while (reader.Read())
{
if (reader.NodeType==XmlNodeType.Element&& reader.Name=="kita")
{
tnKita = new TreeNode();
tnKita.Text = reader.GetAttribute("ad");
tndunya.Nodes.Add(tnKita);
}
else if (reader.NodeType==XmlNodeType.Element && reader.Name=="ulke")
{
tnUlke = new TreeNode();
tnUlke.Text = reader.GetAttribute("ad");
tnKita.Nodes.Add(tnUlke);
}
else if (reader.NodeType==XmlNodeType.Element && reader.Name=="il")
{
reader.Read();
tnIl = new TreeNode();
tnIl.Text = reader.Value;
tnUlke.Nodes.Add(tnIl);
}
}
reader.Close();
}
}
}
XmlTextReader reader = new XmlTextReader(@"..\..\XMLFile1.xml"); ile önce bir XmlTextReader nesnesi yarattık. Okumaya bu nesne ile yapacağız. Constructor'ına da okuyacağımız dosyayı verdik. İki nokta(..) bir üst dizin demektir. .exe dosyasındayiz biz; bir üst dizin bin; diğer üst dizin debug, sonra kendi klasöründeyiz(xml dosyamıza ulastik artik.).
Bunları bir TreeView'da göstermek istedim. O yüzden TreeView'a eklenmek üzere bir TreeNode oluşturdum. Ve text'ine değer atadım. Sonra da TreeView'a ekledim bunu
TreeNode tndunya = new TreeNode();
tndunya.Text = "dunya";
treeView1.Nodes.Add(tndunya);
Daha sonra hiyerarşideki derinliği takip edebilmek için (alt çocukları) TreeNode olarak tanıttım.
TreeNode tnKita = null;
TreeNode tnUlke = null;
TreeNode tnIl = null;
Okuyabildiği sürece okuyabilmesi için bir while döngüsüne aldık.
if (reader.NodeType==XmlNodeType.Element&& reader.Name=="kita") // Eğer bir element ise ve ismi kita ise
tnKita = new TreeNode();//kita'yi instance'ladik
tnKita.Text = reader.GetAttribute("ad");//atrribute'ün degerini alabilirsin o node'daki(atrribute'un ismini ya da indeksini vererek)
tndunya.Nodes.Add(tnKita);//tndunya'nin çocugu oldugu icin ona ekledik.
Aynı mantıkla aşağıdaki kod bloğunu da inceleyebiliriz.
else if (reader.NodeType==XmlNodeType.Element && reader.Name=="ulke")//ulke elementi ise okunan
{
tnUlke = new TreeNode();//tnulke'yi instance'ladik
tnUlke.Text = reader.GetAttribute("ad");//ad attribute'nün degerini aldik
tnKita.Nodes.Add(tnUlke);//tnKita'nin cocugu oldugu icin ona ekledik.
}
Herhalde son bloğu da bu şekilde inceleyebilirsiniz. Son satırda açtığımız reader'ı kapatıyoruz (Aksi taktirde ikinci kez okuma yaptığımızda sorunla karşılaşırız.).
Belirtmediğim son nokta kullandığımız isim uzayı. İşlemlerimizi yaparken System.Xml isim uzayını kullandık.
Geldik bir makalemizin daha sonuna. Bir başka makalede daha görüşmek üzere.
Gürkan Alkan
İstanbul Üniversitesi Bilgisayar Mühendisliği
Beni MapInfo ile yalnız bırakın. :D Görüşmek üzere..
Hiç yorum yok:
Yorum Gönder