C# ile XMLQuery Örneði

Bu yazýmda sizlere, XML dokümanlarýnda nasýl sorgulama yapabileceðimizi basit bir örnek ile anlatmaya çalýþacaðým.

Dilerseniz hemen uygulamaya geçelim. Yeni bir Asp.Net Web Application açýn ve adýný XmlQuery olarak ayarlayýn. Ardýndan projeye yeni bir xml doküman ekleyin ve adýný Kayýtlar.Xml olarak ayarlayýn. Xml dokümanýn yapýsýný aþaðýdaki gibi düzenleyin.

<?xml version="1.0" encoding="utf-8" ?>
<
Kayitlar>
    <
Kayit id="1" tip="A">
        <
Adi>Tolga</Adi>
        <
Soyadi>Güler</Soyadi>
        <
Numarasý>1544747</Numarasý>
    </
Kayit>
    <
Kayit id="2" tip="B">
        <
Adi>Utku</Adi>
        <
Soyadi>Selen</Soyadi>
        <
Numarasý>4577877</Numarasý>
    </
Kayit>
    <
Kayit id="3" tip="B">
        <
Adi>Murat</Adi>
        <
Soyadi>Kula</Soyadi>
        <
Numarasý>8787878</Numarasý>
    </
Kayit>
    <
Kayit id="4" tip="C">
        <
Adi>Argun</Adi>
        <
Soyadi>Çelikten</Soyadi>
    <
Numarasý>7454621</Numarasý>
    </
Kayit>
</
Kayitlar>

WebForm1.aspx.cs dosyasýna aþaðýdaki kodlarý ekleyin.

using System;
using
System.Collections;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Web;
using
System.Web.SessionState;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.HtmlControls;
using
System.Xml;
namespace
XmlQuery

{

public class WebForm1 : System.Web.UI.Page

{

private void Page_Load(object sender, System.EventArgs e)

{

XmlNodeList Isimler,Isimler2,Isimler3,Isimler4,Isimler5;
//XmlNodeList türinden deðiþkenlerimizi tanýmlýyoruz.

XmlTextReader rdr = new XmlTextReader("http://localhost/XmlQuery/kayitlar.xml");
// XmlTextReader sýnýfý yardýmý ile xml dökümanýna eriþiyoruz.
XmlDocument MyXmlDoc =
new XmlDocument();
MyXmlDoc.Load(rdr);
//XmlDocument sýnýfýný xml dökümaný üzerinde iþlem yapabilmek için kullanýyoruz


// Xml domüanýndan  id si 1 olan isimleri seçmek için
Isimler = MyXmlDoc.SelectNodes("/Kayitlar/Kayit[@id='1']/Adi");
/* XmlDocumen.SelectNodes metoduna parametre olarak verdiðimiz XPATH
    e dikkat edin. 
*/

for(int i = 0;i < Isimler.Count;i++)
    Response.Write(Isimler.Item(i).InnerXml.ToString()+"<br>");
// Sonuç "Tolga" olacaktýr.

// id si 1 veya 2 olan kayýtlar için
Isimler2 = MyXmlDoc.SelectNodes("/Kayitlar/Kayit[@id='1' or @id='2']/Adi");
for(int i = 0;i < Isimler2.Count;i++)
    Response.Write(Isimler2.Item(i).InnerXml.ToString()+"<br>");
// Sonuç "Tolga" ve "Utku" olacaktýr.

// id si 1 ve tipi A olan kayýtlar için
Isimler3 = MyXmlDoc.SelectNodes("/Kayitlar/Kayit[@id='1' and @tip='A']/Adi");
for(int i = 0;i < Isimler3.Count;i++)
    Response.Write(Isimler3.Item(i).InnerXml.ToString()+"<br>");
// Sonuç "Tolga" olacaktýr.

// tipi B olan kayýtlarýn adýnýn ilk iki harfi "Ut" olanlar
Isimler4 = MyXmlDoc.SelectNodes("/Kayitlar/Kayit[@tip='B']/Adi[substring(.,1,2) ='Ut']");
for(int i = 0;i < Isimler4.Count;i++)
    Response.Write(Isimler4.Item(i).InnerXml.ToString()+"<br>");
// Sonuç "Utku" olacaktýr.

// tipi B olan kayýtlarýn adýnda "ura" geçenler
Isimler5 = MyXmlDoc.SelectNodes("/Kayitlar/Kayit[@tip='B']/Adi[contains(.,'ura')]");
for(int i = 0;i < Isimler5.Count;i++)
    Response.Write(Isimler5.Item(i).InnerXml.ToString()+"<br>");
// Sonuç "Murat" olacaktýr.

}

}

}


Siz örnekleri istediðiniz gibi geliþtirip çoðaltabilirsiniz.