VB.net İle XML Okuma ve Yazma 2

Makalemizin ikinci bölümünde en kritik noktalardan biri olan objelerimiz ve objelerimizi bir arada tutan collectionlar kavramını işleyeceğiz.. XML yazma ve okuma fonksiyon olarak kolleksiyonumuzda olacak. Kolleksiyonumuz Ordered Dictionary şeklinde class larımızı tutacağız. 

Objel(Class)  ve Kolleksiyon
Objelerimizde Müşteri Id (Tekil alan), Name, Surname şeklinde olacaktır


    1 #Region " Customer"

    2 Public Class Customer

    3 #Region " Declarations"

    4     Private _CustomerNumber As Integer

    5     Private _Name As String

    6     Private _Surname As String

    7 #End Region

    8 #Region " Properties"

    9     Public Property CustomerNumber() As Integer

   10         Get

   11             Return _CustomerNumber

   12         End Get

   13         Set(ByVal value As Integer)

   14             _CustomerNumber = value

   15         End Set

   16     End Property

   17     Public Property Name() As String

   18         Get

   19             Return _Name

   20         End Get

   21         Set(ByVal value As String)

   22             _Name = value

   23         End Set

   24     End Property

   25     Public Property Surname() As String

   26         Get

   27             Return _Surname

   28         End Get

   29         Set(ByVal value As String)

   30             _Surname = value

   31         End Set

   32     End Property

   33 #End Region

   34 End Class

   35 #End Region

   36 #Region " Customers"

   37 Public Class Customers

   38     Implements IEnumerable, IEnumerator

   39     Dim List As System.Collections.Specialized.OrderedDictionary

   40     Dim Position As Integer = -1

   41     Public Sub New()

   42         List = New System.Collections.Specialized.OrderedDictionary

   43 

   44     End Sub

   45     Public Sub Add(ByVal Value As Customer)

   46         List.Add(Value.CustomerNumber.ToString, Value)

   47     End Sub

   48     Default Public ReadOnly Property Item(ByVal Index As Integer) As Customer

   49         Get

   50             Return CType(List(Index), Customer)

   51         End Get

   52     End Property

   53     Default Public ReadOnly Property Item(ByVal Key As String) As Customer

   54         Get

   55             Return CType(List(Key), Customer)

   56         End Get

   57     End Property

   58     Public Sub Remove(ByVal Key As String)

   59         List.Remove(Key)

   60     End Sub

   61     Public Sub Remove(ByVal Index As Integer)

   62         List.RemoveAt(Index)

   63     End Sub

   64     Public ReadOnly Property Count() As Integer

   65         Get

   66             Return List.Count

   67         End Get

   68     End Property

   69     Public Sub Clear()

   70         List.Clear()

   71     End Sub

   72     Public ReadOnly Property Current() As Object Implements System.Collections.IEnumerator.Current

   73         Get

   74             Return CType(List(Position), Customer)

   75         End Get

   76     End Property

   77     Public Function MoveNext() As Boolean Implements System.Collections.IEnumerator.MoveNext

   78         Position += 1

   79         Return Position < List.Count

   80     End Function

   81     Public Sub Reset() Implements System.Collections.IEnumerator.Reset

   82         Position = -1

   83     End Sub

   84     Public Function GetEnumerator() As System.Collections.IEnumerator Implements System.Collections.IEnumerable.GetEnumerator

   85         Position = -1

   86         Return CType(Me, IEnumerator)

   87     End Function

   88     Public Sub WriteXML(ByVal XW As Xml.XmlWriter)

   89         XW.WriteStartDocument()

   90         XW.WriteStartElement("Customers")

   91         For Each C As Customer In Me

   92             XW.WriteStartElement("Customer")

   93             XW.WriteAttributeString("CustomerNumber", C.CustomerNumber.ToString)

   94             XW.WriteAttributeString("Name", C.Name)

   95             XW.WriteAttributeString("Surname", C.Surname)

   96             XW.WriteEndElement()

   97         Next

   98         XW.WriteEndElement()

   99         XW.WriteEndDocument()

  100         XW.Flush()

  101         XW.Close()

  102     End Sub

  103     Public Sub ReadXML(ByVal XR As Xml.XmlReader)

  104         Me.Clear()

  105         While XR.Read

  106             Select Case XR.NodeType

  107                 Case Xml.XmlNodeType.Element

  108                     Select Case XR.Name

  109                         Case "Customer"

  110                             Dim C As New Customer

  111                             While XR.MoveToNextAttribute

  112                                 With C

  113                                     Select Case XR.Name

  114                                         Case "CustomerNumber"

  115                                             .CustomerNumber = CInt(XR.Value)

  116                                         Case "Name"

  117                                             .Name = XR.Value

  118                                         Case "Surname"

  119                                             .Surname = XR.Value

  120                                     End Select

  121                                 End With

  122                             End While

  123                             Me.Add(C)

  124                     End Select

  125             End Select

  126         End While

  127         XR.Close()

  128     End Sub

  129 End Class

  130 #End Region

 İlk formumuzda bir önceki makalemizde yaptığmız listview’I kullanacağız.Form Load olayında Read XML ile bilgilieri kolleksiyona alıp listview I dolduracağız. Listview öğelerinin taglarına müşterilerin numaralarını atayacağız.



    2 #Region " Declarations"

    3     Dim Customers As New Customers

    4 #End Region

    5 #Region " frmEvents"

    6     Private Sub frmList_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    7         If IO.Directory.Exists("C:\C") Then

    8             If IO.File.Exists("C:\C\Customers.Xml") Then

    9                 Customers.ReadXML(New Xml.XmlTextReader("C:\C\Customers.Xml"))

   10             End If

   11         Else

   12             IO.Directory.CreateDirectory("C:\C")

   13         End If

   14 

   15         FillListview()

   16     End Sub

   17     Private Sub frmList_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing

   18         Dim XW As New Xml.XmlTextWriter("C:\C\Customers.Xml", System.Text.Encoding.Default)

   19         XW.Formatting = Xml.Formatting.Indented

   20         Customers.WriteXML(XW)

   21     End Sub

   22 #End Region

   23 #Region " PrivateMethods"

   24     Public Sub FillListview()

   25         ListView1.Items.Clear()

   26         If Customers.Count > 0 Then

   27             For Each C As Customer In Customers

   28                 Dim Li As ListViewItem = ListView1.Items.Add(C.CustomerNumber.ToString)

   29                 Li.SubItems.Add(C.Name)

   30                 Li.SubItems.Add(C.Surname)

   31                 Li.Tag = C.CustomerNumber

   32             Next

   33         End If

   34 

   35     End Sub

   36 #End Region







Devamı bir sonraki makalemizde

0 yorum: