EYLÜL_PC_SHOP
Would you like to react to this message? Create an account in a few clicks or log in to continue.

EYLÜL_PC_SHOP

EYLÜL_PC_SHOP
 
AnasayfaAnasayfa  Latest imagesLatest images  AramaArama  Kayıt OlKayıt Ol  Giriş yapGiriş yap  

 

 Xml Serialization

Aşağa gitmek 
YazarMesaj
Admin
Admin



Mesaj Sayısı : 99
Kayıt tarihi : 29/12/08

Xml Serialization Empty
MesajKonu: Xml Serialization   Xml Serialization EmptyPerş. Ocak 01, 2009 9:57 pm

.NET Framework ‘teki tek “serialize edilebilen” nesne, elbetteki DataSet nesnesi değildir. Aslında bizim yazmış olduğumuz bir sınıf türündeki nesne de serialize edilebilir. .NET Framework Class Library ‘ de bir nesneye, XmlSerialization uygulamayı sağlayan XmlSerializer isimli bir sınıf bulunur. XmlSerializer sınıfı; System.Xml.Serialization namespace ‘inin bir üyesidir. XmlSerializer sınıfı türünde tanımlanan bir nesnenin üyeleri kullanılarak serialization ve deserialization işlemleri gerçekleştirilebilir.

XmlSerializer Sınıfının Üyeleri

XmlSerializer sınıfı türünde tanımlanan bir nesnenin türetilmesi amacı ile, bu sınıfın overload constructor metotlarından herhangi birisi kullanılabilir. Aşağıda prototipi verilen versiyon, pratikte en sık kullanılan versiyondur;

[Visual Basic]

Public Sub New(ByVal type as Type)

Bu metoda XmlSerialization uygulanmak istenen nesnenin türü parametre olarak geçirilir. Örneğin CDeneme isimli sınıf türündeki nesnelere XmlSerialization uygulanmak isteniyorsa; Dim oSer As XmlSerializer
oSer = new XmlSerializer(GetType(CDeneme)) XmlSerialization sınıfının, serialization işlemini gerçekleştirmekten sorumlu olan üyesi; Serialize() metodudur. Serialize() metodu overload tasarlanmış bir metottur ve birden fazla farklı parametrik yapıya sahip versiyonu vardır. Aşağıda prototipini verdiğim Serialize() metodu; ikinci parametresine geçirilen nesneyi serialize eder ve bu nesnenin public veri elemanlarındaki değerleri, ikinci parametresine geçirilen Stream sınıfı türündeki nesne ile temsil edilen xml stream ‘e yazdırır. Public Sub Serialize(ByVal stream as Stream, ByVal o as Object)

Örnek : Aşağıdaki konsol uygulamasında, Siparis sınıfı türündeki oSiparis nesnesinin public veri elemanlarındaki değerler, oSer nesnesinin Serialize() metodu kullanılarak “Siparis.xml” isimli dosyaya yazdırılmıştır.

Imports System.Xml.Serialization

Imports System.IO

Public Class Siparis

Public m_Urun As String Public m_Musteri As String
Public m_Adet As Integer
Private m_Tarih As Date
Public Sub New()

End Sub

Public Sub New(ByVal pMusteri As String, _
ByVal pUrun As String, ByVal pAdet As Integer)

m_Musteri = pMusteri m_Urun = pUrun m_Adet = pAdet

End Sub
Public Sub TarihVer()
m_Tarih = Now()

End Sub

End Class

Module Module1 Public Sub main() Dim oSiparis As Siparis oSiparis = New Siparis("Emre EROGLU", "Klima", 1) Dim oSer As New XmlSerializer(GetType(Siparis)) Dim oFile As FileStream oFile = New FileStream("C:\\Siparis.xml", FileMode.CreateNew) oSer.Serialize(oFile, oSiparis) oFile.Close() End Sub End Module

Bu örneğin çalıştırılması ile elde edilen “Siparis.xml” dosyasının içeriği şöyle olacaktır;

<?xml version="1.0"?>

<Siparis xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<m_Urun>Klima</m_Urun>

<m_Musteri>Emre EROGLU</m_Musteri>

<m_Adet>1</m_Adet>

</Siparis>

“Siparis.xml” dosyasının içeriğini kısaca incelersek, gözümüze ilk çarpan; sadece m_Urun, m_Musteri ve m_Adet isimli değişkenlerin içerdiği değerlerin dosya içerisinde bulunması, ancak mTarih isimli değişkenin taşıdığı değerin bulunmamasıdır. Bu durum, m_Tarih isimli değişkenin private anahtar sözcüğü ile tanımlanmış olmasından kaynaklanmaktadır.

XmlSerialization sınıfının deserialization işlemini gerçekleştirmekten sorumlu olan üyesi ise; Deserialize() metodudur. Deserialize() metodu da overload tasarlanmış bir metottur ve birden fazla farklı parametrik yapıya sahip versiyonu vardır. Aşağıda prototipini verdiğim Deserialize() metodu; parametresine geçirilen Stream sınıfı türündeki nesnenin temsil ettiği xml stream ‘indeki verileri içeren, Object sınıfı türünde bir nesne referansı döndürür. Bu fonksiyondan dönen referans kullanılarak, herhangi bir sınıf türünde tanımlanmış nesnenin türetilmesi sağlanır.

Public Function Deserialize(ByVal stream as Stream) as Object

Örnek : Aşağıdaki konsol uygulamasında önceki örnekte yarattığımız “Siparis.xml” dosyasındaki verilerin oSiparis isimli nesnenin ilgili alanlarına aktarılması (deserialization işlemi) sağlanmıştır. Daha sonra oSiparis isimli nesnenin söz konusu alanlarındaki değerler konsol ekranına yazdırılmıştır.



Imports System.Xml.Serialization

Imports System.IO



Public Class Siparis

Public m_Urun As String

Public m_Musteri As String

Public m_Adet As Integer

Private m_Tarih As Date



Public Sub New()



End Sub



Public Sub New(ByVal pMusteri As String, _

ByVal pUrun As String, ByVal pAdet As Integer)



m_Musteri = pMusteri

m_Urun = pUrun

m_Adet = pAdet

End Sub



Public Sub TarihVer()

m_Tarih = Now()

End Sub



End Class



Module Module1

Public Sub main()

Dim oSer As New XmlSerializer(GetType(Siparis))

Dim oFile As FileStream

oFile = New FileStream("C:\\Siparis.xml", FileMode.Open)



Dim oSiparis As Siparis = oSer.Deserialize(oFile)



Dim s As String

s = "m_Urun = " & oSiparis.m_Urun & vbNewLine

s &= "m_Musteri = " & oSiparis.m_Musteri & vbNewLine

s &= "m_Adet = " & oSiparis.m_Adet

Console.WriteLine(Temp)

oFile.Close()

End Sub

End Module



Örnekte oSer nesnesinin Deserialize() metodu kullanılarak, oFile isimli nesne ile temsil edilen stream ‘deki verilerin, oSiparis isimli nesnenin ilgili veri alanlarına aktarılması sağlanmıştır.



Örnek : Herhangi bir sınıf türündeki nesne, nasıl ki XmlSerialization işlemine tabi tutuluyorsa, aynı şekilde bir DataSet nesnesine de XmlSerialization uygulanabilir. Aşağıdaki örnek uygulamada Northwind veri tabanındaki Employees tablosundan, EmployeeID alanındaki değeri 2 olan, kayıt, oDs nesnesi ile temsil edilen DataSet içerisindeki “CalisanlarTablosu” isimli tabloya aktarılmıştır. Daha sonra oDs nesnesi, oSer isimli nesne ile, XmlSerialization işlemine tabi tutulmuş ve içeriği “DS.xml” isimli dosyaya kaydedilmiştir.

Imports System.Data.SqlClient

Imports System.Data.Common

Imports System.Xml.Serialization

Imports System.IO



Module Module1

Sub Main()

Dim cnnStr As String

cnnStr = "initial Catalog=Northwind"

cnnStr &= ";Data Source=localhost;User id=sa"

Dim oDs As New DataSet("Calisanlar")

Dim oCnn As SqlConnection

oCnn = New SqlConnection(cnnStr)

oCnn.Open()



Dim oAdp As SqlDataAdapter = New SqlDataAdapter()

Dim sSql As String

sSql = "Select LastName, FirstName From Employees "

sSql &= "Where EmployeeID = 2"

oAdp.SelectCommand = New SqlCommand(sSql, oCnn)

oAdp.Fill(oDs, "Calisanlar Tablosu")



’XML Serialization işlemi

Dim oSer As XmlSerializer

oSer = New XmlSerializer(GetType(DataSet))

Dim oFile As FileStream

oFile = New FileStream("C:\\DS.xml", FileMode.CreateNew)

oSer.Serialize(oFile, oDs)

oFile.Close()

End Sub

End Module
Sayfa başına dön Aşağa gitmek
http://fetle.yetkinforum.com
 
Xml Serialization
Sayfa başına dön 
1 sayfadaki 1 sayfası

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
EYLÜL_PC_SHOP :: Programlama :: XML/XSLT-
Buraya geçin: