• Nie Znaleziono Wyników

Zapis/odczyt właściwości obiektu serializacją do pliku xml

N/A
N/A
Protected

Academic year: 2021

Share "Zapis/odczyt właściwości obiektu serializacją do pliku xml"

Copied!
3
0
0

Pełen tekst

(1)

Powtórzenie – 3_xml_zapisz/odczyt

Copyright © 2015, mgr inż. Janusz Bonarowski 1

Zapis/odczyt właściwości obiektu serializacją do pliku xml Zadanie

Utwórzmy klasę Prostokat o właściwościach Dlugosc_boku1 i Dlugosc_boku2.

Utwórzmy instancję tej klasy. Podstawmy wartości właściwości z TextBoxów.

Zapiszmy serializacją obiekt w pliku xml.

Następnie przeedytujmy plik xml, korzystając z Notatnika, zmniejszając wartości właściwości o połowę.

Odczytajmy serializacją plik xml po zmianie i wyświetlmy wartości właściwości.

Form1.vb

Imports System.IO Imports System.Xml Public Class Form1

Dim mojP As New Prostokat

Private Sub btnZapisz_Click(sender As Object, e As EventArgs) _

Handles btnZapisz.Click mojP.Dlugosc_boku1 = CSng(TextBox1.Text)

mojP.Dlugosc_boku2 = CSng(TextBox2.Text) '

' Zapisanie właściwości obiektu do pliku serializacją '

Dim SerializacjaDoPlikuXml As Serialization.XmlSerializer Dim plikXML As FileStream = _

New FileStream("Dane_prostokata.xml", FileMode.Create, FileAccess.Write, FileShare.None)

SerializacjaDoPlikuXml = _

New Serialization.XmlSerializer(GetType(Prostokat)) SerializacjaDoPlikuXml.Serialize(plikXML, mojP)

plikXML.Close()

MsgBox("Plik XML został zapisany.") End Sub

Private Sub btnOdczytaj_Click(sender As Object, e As EventArgs) _

Handles btnOdczytaj.Click ' Odczytanie właściwości z pliku xml

Dim PlikDanych As FileStream =

File.Open("Dane_prostokata.xml", FileMode.Open, FileAccess.Read) Dim MojaSerializacja As New _

Serialization.XmlSerializer(GetType(Prostokat)) mojP = MojaSerializacja.Deserialize(PlikDanych) PlikDanych.Close()

' Przełożenie właściwości z obiektu do TextBoxów TextBox1.Text = mojP.Dlugosc_boku1.ToString TextBox2.Text = mojP.Dlugosc_boku2.ToString MsgBox("Plik XML został odczytany.")

End Sub End Class

(2)

Powtórzenie – 3_xml_zapisz/odczyt

Copyright © 2015, mgr inż. Janusz Bonarowski 2

Class1.vb

Public Class Prostokat

Private _Dlugosc_boku1 As Single Private _Dlugosc_boku2 As Single

Public Property Dlugosc_boku1 As Single Get

Return _Dlugosc_boku1 End Get

Set(value As Single)

_Dlugosc_boku1 = value End Set

End Property

Public Property Dlugosc_boku2 As Single Get

Return _Dlugosc_boku2 End Get

Set(value As Single)

_Dlugosc_boku2 = value End Set

End Property End Class

Jeśli zapisaliśmy aplikację w katalogu:

c:\tkm\gr_2.1_MiBM\xml_serializacja

i w kodzie nie zapisaliśmy pliku w jakiejś szczególnej lokalizacji, to odnajdziemy go na ścieżce:

c:\tkm\gr_2.1_MiBM\xml_serializacja\xml_serializacja\bin\Debug\Dane_prostokata.xml

Rysunek 1. Plik xml przed edycją w Internet Explorzerze

Rysunek 2. Plik po edycji w Notatniku

(3)

Powtórzenie – 3_xml_zapisz/odczyt

Copyright © 2015, mgr inż. Janusz Bonarowski 3

Uwaga:

W przedstawionej powyżej procedurze Private Sub btnZapisz_Click(…) zapisanie właściwości obiektu odbywa się odrębną procedurą – natomiast w aplikacji Wałek procedura XMLZapisz nie jest niezależnym kodem lecz jest metodą w konkretnej klasie (a dokładniej – jest metodami w klasach Stopien_walu, StopienFazaZLewej i StopienFazaZPrawej).

Pociąga to za sobą inną postać przedostatniego wiersza tego kodu.

W wierszu tym, drugim oczekiwanym elementem wywołania metody Serialize jest obiekt do serializacji, patrz rys. 3.

Rysunek 3

Co tam wpisać?

Gdy w aplikacji Wałek mamy do czynienia z metodą XMLZapisz w konkretnej klasie – wpisujemy w tym miejscu Me, rys. 4, czyli po polsku mówiąc „ja” lub „mnie”. Klasa „wie jak się nazywa” i mówi po angielsku o sobie Me – czyli serializuj „mnie”.

Rysunek 4

Natomiast w procedurze niezależnej, pokazanej w tym dokumencie na str. 1, obsługującej zdarzenie btnZapisz_Click() musimy jawnie wskazać o jaki obiekt nam chodzi stąd wpisujemy nazwę obiektu, w tym przypadku mojP, rys. 5.

Rysunek 5

Cytaty

Powiązane dokumenty

Rozwiązanie to spełnia wymagania stawiane w WT2021 oraz warunek procedury wyboru optymalnego usprawnienia określony w rozporządzeniu Ministra Infrastruktury z dnia

hydrantu zewnętrznego przy budynku sali gimnastycznej zostanie oznakowane zgodnie z

Architektura- dziedzina sztuki, w której dziełami są różnorodne obiekty budowlane, projektowane z uwzględnieniem ich przeznaczenia oraz warunków w konkretny miejscu..

Wektor zidentyfikowanych parametrów a jest wynikiem przeprowadzonej * identyfikacji, na podstawie modelu matematycznego systemu identyfikacji parametrycznej

Następnie zapisz zmodyfikowane dane do pliku o nazwie złożonej ze starej nazwy i wyrażenia „_wg_ocen” – czyli dla przykładu „studenci_wg_ocen.txt”..

Wtedy nie ma problemu z przecinkiem jako separatorem (czy separator dziesiętny czy separator

Przeedytujmy plik xml, korzystając z Notatnika, zmniejszając wartości właściwości o połowę. Odczytajmy serializacją plik xml po zmianie i wyświetlmy

Do wszystkich klas definiujących stopnie, czyli do klasy bazowej Stopien_walu oraz do klas pochodnych StopienFazaZLewej, StopienFazaZPrawej dodamy metodę XMLZapisz –