Yazılımcının Günlüğü | YazilimGunlugu.Com
Arama
Makale Kategorileri
Üye Girişi
Şuanki online üyeler()
Aktif üye bulunmamaktadır.


Verileri Xml Icerisine Yazmak

Yazar: Cengiz Atilla

Kategori: C#.NET & VB.NET

Eklenme Tarihi: 07.08.2009 20:42:48

Makalemizde linq to xml ve linq to sql kullanarak verilerimizi xml dosyamıza yazıcagız. Xml içerisine verilerimizi yazarken iç içe sorgular içerisinde çalışacağız
Makalemize başlamadan önce sql tablolarımızı oluşturalım. Uygulamamızda AracStoklarımızın tutulduğu tablodaki araçlarımızı xml döküman olarak kayıt ediceğiz.

* Araçlarımızın tutulduğu tablo

create table
tblaracbilgi
(
Aracid int identity(1,1
),
BinekTicari nvarchar(max
),
Marka nvarchar(max
),
Model nvarchar(max
),
Tip nvarchar(max
),
ModelYil int
,
MotorHacim int
,
MotorGucu int
,
Km int
,
Renk nvarchar(max
),
VitesTipiid int
,
Kasatipiid int
,
YakitTipiid int
,
Fiyat nvarchar(max
),
Parabirim
int
)

* Parabirim tablomuzun tutulduğu tablo

create table
tbl_aracparabirim
(
Parabirimid int identity(1,1)
,
Tanim nvarchar(max
)
)

* Yakıt tiplerimizin tutulduğu tablo 

create table
tblaracyakittip
(
Yakittipid int identity(1,1
),
Tanim nvarchar(max
)
)

* Kasatiplerinin tutulduğu tablo

create table
tblarackasatip
(
Kasatipiid int identity(1,1
),
Kasatip nvarchar(max
)
)


* Arac Donanımlarının Tutulduğu tablo 

create table
tblaracdonanim
(
Donanimid int identity(1,1
),
Aracid int
,
Tanim nvarchar(max
)
)


* Vitestiplerimizin tutulduğu tablo 

create table
tblaracvitestip
(
Vitestipiid int identity(1,1
),
Tanim nvarchar(max
)
)


Yukarıdaki şekilde tablolarımızı oluşturduk . tblaracbilgi tablomuzda bazı alanlar int almaktadır . tblaracbilgi tablomuzu xml dosyamıza atarken bazı int degerlerin string karsılıklarını diğer tablolarımıza baglanarak alıcağız.

Sql sorgusu olarak düşünürsek  : select BinekTicari , Marka , Model , Tip , ModelYil, MotorHacim ,MotorGucu, Km, Renk, (Select Tanim from tblaracvitestip where Vitestipiid = tblaracbilgi.VitesTipiid ) as Vitestipi from
tblaracbilgi

Amacımız xml ' e yazma konusuna bakarken değişik select ifadeleri kullanmak ...


Örnek xml cıktımız bu sekilde olucakdır. Tabiki bu sadece bir veri verimizi inceleyelim

<AracListesi>
  <AracBilgi>
    <BinekTicari>BINEK</BinekTicari>
    <Marka>VOLKSWAGEN</Marka>
    <Model>BORA</Model>
    <Tip>BORA 1.6 PASIFIC OV</Tip>
    <ModelYil>2002</ModelYil>
    <MotorHacim>1600</MotorHacim>
    <MotorGucu>100</MotorGucu>
    <Km>12000</Km>
    <Renk>BEYAZ</Renk>
    <VitesTip>OTOMATİK</VitesTip>
    <Kasatipiid>SEDAN</Kasatipiid>
    <YakitTipiid>BENZIN</YakitTipiid>
    <Fiyat>20000</Fiyat>
    <ParaBirim>TL</ParaBirim>
    <Donanim>
      <Tanim>
        <Donanim>HIDROLIK DIREKSIYON</Donanim>
        <Donanim>KLIMA</Donanim>
        <Donanim>ABS</Donanim>
        <Donanim>EBS</Donanim>
        <Donanim>FARSENSORU</Donanim>
      </Tanim>
    </Donanim>
  </AracBilgi>
</AracListesi>


Vitestip , Kasatipid,Yakittipid,Parabirim,Donanim kısımları tblaracbilgi tablomuzda int deger olarak durmakda bu int deger xml oluşturulur iken diger tablodan string degerini alıp xml in içerisine o şekilde yazar.

Console uygulamamızı açalım ve başlayalım . 

dbml imizi oluşturup içerisine tablolarımızı alalım .

Program.cs 
-----------------

StoklarimDataContext AracStok = new StoklarimDataContext
();

datacontext imizi örnekledik artık sql deki tablolarımıza AracStok üzerinden erişebilir ve kullana biliriz. 

Şimdi xml imizin hazırlanacagı kodlar kısmına geçelim . 

XDocument Stoklarim = new XDocument(new XDeclaration("1.0", "utf-8", "yes"
),
new XElement("AracListesi"
,
from araclistesi in
AracStok.tblaracbilgis
select new
XElement
("AracBilgi"
,
new XElement("BinekTicari"
, araclistesi.BinekTicari),
new XElement("Marka"
, araclistesi.Marka),
new XElement("Model"
, araclistesi.Model),
new XElement("Tip"
, araclistesi.Tip),
new XElement("ModelYil"
, araclistesi.ModelYil),
new XElement("MotorHacim"
, araclistesi.MotorHacim),
new XElement("MotorGucu"
, araclistesi.MotorGucu),
new XElement("Km"
, araclistesi.Km),
new XElement("Renk"
, araclistesi.Renk),
new XElement("VitesTip", (from vtip in
AracStok.tblaracvitestips
where
vtip.Vitestipiid == araclistesi.VitesTipiid
select new
{ vtip.Tanim }).FirstOrDefault().Tanim),
new XElement("Kasatipiid", (from ktip in AracStok.tblarackasatips where ktip.Kasatipiid == araclistesi.Kasatipiid select new
{ ktip.Kasatip }).FirstOrDefault().Kasatip),
new XElement("YakitTipiid", (from ytip in AracStok.tblaracyakittips where ytip.Yakittipid == araclistesi.YakitTipiid select new
{ ytip.Tanim }).FirstOrDefault().Tanim),
new XElement("Fiyat"
, araclistesi.Fiyat),
new XElement("ParaBirim", (from pbirim in
AracStok.tbl_aracparabirims
where
pbirim.Parabirimid == araclistesi.Parabirim
select new
{ pbirim.Tanim }).FirstOrDefault().Tanim),
new XElement("Donanim"
,
new XElement("Tanim", (from dlistesi in
AracStok.tblaracdonanims
where
dlistesi.Aracid == araclistesi.Aracid
select new XElement("Donanim"
, dlistesi.Tanim)))))));
Stoklarim.Save("Stoklarim.xml");

Yukarıdaki kod blogumuzu açıklayalım ... 

XDocument Stoklarim = new XDocument(new XDeclaration("1.0", "utf-8", "yes"),

kısmında xml işlemimize başladık XDeclaration kısmında xml imizin üst kısmında çıkan tag kısmımızı ayarladık 

new XElement("AracListesi",  root kısmımızı belirledik . 

from araclistesi in AracStok.tblaracbilgis
select new
XElement
("AracBilgi"
,
new XElement("BinekTicari"
, araclistesi.BinekTicari),

from araclistesi in AracStok.tblaracbilgis select new XElement ile linq to sql  ifademizi devreye alıp verimizi çektik çekmiş oldugumuz bu verinin yeni bir XElement olduguna dikkat edin . 

new XElement("BinekTicari", araclistesi.BinekTicari),

ifadesi ile BinekTicari bilgimizi araclistesi.BinekTicari kısmından aldık . 


new XElement("VitesTip", (from vtip in AracStok.tblaracvitestips
where
vtip.Vitestipiid == araclistesi.VitesTipiid
select new
{ vtip.Tanim }).FirstOrDefault().Tanim),

Kısmında ise Vitestipimiz tblaracbilgi tablosunda int deger olarak 1 2 etc seklinde durmakda simdi degerimizi tblaracvitestip tablosundan tam karsılıgı olan string degeri çekmek icin 

(from vtip in
AracStok.tblaracvitestips
where
vtip.Vitestipiid == araclistesi.VitesTipiid
select new
{ vtip.Tanim }).FirstOrDefault().Tanim) tanımını kullandık 

bu sayede int degerimizin string karşılığını vites tanımlarımızın tutulduğu tablomuzdan çekmiş olduk . 

Tüm degerlerimizi aldıkdan sonra Stoklarim.Save("Stoklarim.xml"
); ile xml imizi kayıt ettik . 

İndir :
www.cengizatilla.com/DownloadMe/Xmlyazma.rar 
Not : rar dosyası içerisinde sql database de bulunmaktadır . Uygulamayı çalıştırmadan önce sql server uzerinden ekleyin .

Cengiz ATİLLA
----------------------------------
cengiz.atilla@hotmail.com 
atilla@cengizatilla.com

Yazar Hakkında 2 Yorum Yorum Yaz Yazara ait diğer Makaleler
Tema
Anket
ASP.NET MVC'yi Projeleriniz de kullandınız mı?


En Çok Okunan Makaleler
En Son Eklenen Makaleler
Soru Merkezinde Bekleyenler
Ana Sayfa | Hakkımızda | Editörler | Yazarlar | RSS RSS | İletişim
Yazılım Günlüğü 2007-2009 © Tüm Hakları Saklıdır.