Чтение онлайн

ЖАНРЫ

Программирование мобильных устройств на платформе .NET Compact Framework

Салмре Иво

Шрифт:

Option Strict On

Option Compare Binary

Imports System

Public Class SaveAndLoadXML UseReaderWriter

'XML-дескрипторы, которые мы будем использовать в своем документе

Const XML_ROOT_TAG As String = "AllMyData"

Const XML_USERINFO_TAG As String = "UserInfo"

Const XML_USERID_TAG As String = "UserID"

Const XML_NAMEINFO_TAG As String = "Name"

Const XML_FIRSTNAME_TAG As String = "FirstName"

Const XML_LASTNAME TAG As String = "LastName"

'Набор
состояний, отслеживаемых по мере чтения данных

Private Enum ReadLocation

 inAllMyData

 inUserInfo

 inUserID

 inName

 inFirstName

 inLastName

End Enum

'--------------------------------------------------------------------

'Сохраняет пользовательское состояние

' [in] fileName: Имя файла, используемого для сохранения данных

' [in] userId: Идентификатор пользователя, который мы хотим сохранить

' [in] firstName: Имя пользователя, которое мы хотим сохранить

' [in] lastName: Фамилия пользователя, которую мы хотим сохранить

'--------------------------------------------------------------------

Public Shared Sub XML_SaveUserInfo(ByVal fileName As String, _

 ByVal userId As Integer, ByVal firstName As String, _

 ByVal lastName As String)

 Dim xmlTextWriter As System.Xml.XmlTextWriter

 xmlTextWriter = New System.Xml.XmlTextWriter(fileName, _

System.Text.Encoding.Default)

 'Записать содержимое документа!

 '<Root>

 xmlTextWriter.WriteStartElement(XML_ROOT_TAG)

 '<Root>

 xmlTextWriter.WriteStartElement(XML_USERINFO_TAG)

 '<Root><UserID>

 '<Root><UserInfo>

 xmlTextWriter.WriteStartElement(XML_NAMEINFO_TAG)

 '<Root><UserInfo><Name>

 xmlTextWriter.WriteStartElement(XML_FIRSTNAME_TAG)

 '<Root><UserInfo><Name><FirstName>

 xmlTextWriter.WriteString(firstName) 'Запись значения

 xmlTextWriter.WriteEndElement 'Закрыть дескриптор имени

 '<Root><UserInfo><Name>

 xmlTextWriter.WriteStartElement(XML_LASTNAME_TAG)

 '<Root><UserInfo><Name><LastName>

 xmlTextWriter.WriteString(lastName) 'Запись значения

 xmlTextWriter.WriteEndElement 'Закрыть
дескриптор фамилии

 '<Root><UserInfo><Name>

 xmlTextWriter.WriteEndElement 'Закрыть дескриптор ФИО

 '<Root><UserInfo>

 '<Root><UserInfo>

 xmlTextWriter.WriteStartElement(XML_USERID_TAG)

 '<Root><UserInfo><UserID>

 'Запись значения

 xmlTextWriter.WriteString(userId.ToString)

 xmlTextWriter.WriteEndElement 'Закрыть дескриптор UserID

 '<Root><UserInfo>

 xmlTextWriter.WriteEndElement

 'Закрыть дескриптор UserInfo

 '<Root>

 xmlTextWriter.WriteEndElement 'Закрыть дескриптор документа

 xmlTextWriter.Close

End Sub

'--------------------------------------------------------------

'Загружает пользовательское состояние

' [in] fileName: Имя файла, используемого для сохранения данных

' [out] userId: Загруженный идентификатор пользователя

' [out] firstName: Загруженное имя пользователя

' [out] lastName: Загруженная фамилия пользователя

'--------------------------------------------------------------

Public Shared Sub XML_LoadUserInfo(ByVal fileName As String, _

 ByRef userId As Integer, ByRef firstName As String, _

 ByRef lastName As String)

 Dim currentReadLocation As ReadLocation

 'Начинаем с нулевых значении

 userId = 0

 firstName = ""

 lastName = ""

 Dim xmlReader As System.Xml.XmlTextReader = _

New System.Xml.XmlTextReader(fileName)

 xmlReader.WhitespaceHandling = _

System.Xml.WhitespaceHandling.None

 Dim readSuccess As Boolean

 readSuccess = xmlReader.Read

 If (readSuccess = False) Then

Throw New System.Exception("Отсутствуют XML-данные для чтения!")

 End If

 'Убедиться в том, что мы распознали корневой дескриптор

 If (xmlReader.Name <> XML_ROOT_TAG) Then

Throw New System.Exception( _

"Корневой дескриптор отличается от ожидаемого!")

Поделиться с друзьями: