Verileri XML İçine Yazmak

Ö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’dan alıntıdır. Anlatımı için teşekkürler.

    Cevap Gönder

    E-posta adresiniz yorumunuzda yayınlanmayacaktır.