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

на главную - закладки

Жанры

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

Салмре Иво

Шрифт:

 '<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( _

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

 End If

 'Отметить текущее местоположение в документе

 currentReadLocation = ReadLocation.inAllMyData

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

 'Цикл прохождения документа и чтение необходимых данных

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

 While (readSuccess)

Select Case (xmlReader.NodeType)

'Вызывается при входе в новый элемент

Case System.Xml.XmlNodeType.Element

Dim nodeName As String = xmlReader.Name

LoadHelper_NewElementEncountered(nodeName, _

currentReadLocation)

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

'Здесь мы можем извлечь некоторый фактический текст

'и получить данные, которые пытаемся загрузить

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

Case System.Xml.XmlNodeType.Text

Select Case currentReadLocation

Case ReadLocation.inFirstName

firstName = xmlReader.Value

Case ReadLocation.inLastName

lastName = xmlReader.Value

Case ReadLocation.inUserID

userId = CInt(xmlReader.Value)

End Select

'Конец оператора Case "System.Xml.XmlNodeType.Text"

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

'Вызывается, когда встречается конец

'элемента

'

'Мы можем захотеть переключить состояние в зависимости

'от вида покидаемого узла, чтобы указать на то, что

'собираемся вернуться назад к его предку

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

Case System.Xml.XmlNodeType.EndElement

Dim continueParsing As Boolean

continueParsing = LoadHelper_EndElementEncountered( _

currentReadLocation)

If (continueParsing = False) Then

GoTo finished_reading_wanted_data

End If

Case Else

'He страшно, если имеются XML-узлы других типов, но

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

'оповестить об этом факте

MsgBox( _

"Встретился непредвиденный XML-тип " + xmlReader.Name)

End Select 'Конец оператора Case, используемого для определения текущего

'типа XML-элeмeнтa, oбpaбaтывaeмoгo анализатором

'Перейти к следующему узлу

readSuccess = xmlReader.Read

Поделиться:
Популярные книги

Я снова царь. Книга XXXIII

Дрейк Сириус
33. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я снова царь. Книга XXXIII

На границе империй. Том 10. Часть 9

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 9

Трое с площади Карронад

Крапивин Владислав Петрович
Детские:
детские приключения
9.10
рейтинг книги
Трое с площади Карронад

Я снова не князь! Книга XVII

Дрейк Сириус
17. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я снова не князь! Книга XVII

Сильнейший Столп Империи. Книга 2

Ермоленков Алексей
2. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 2

Слезы Эйдена 1

Владимиров Денис
11. Глэрд
Фантастика:
боевая фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Слезы Эйдена 1

На границе империй. Том 3

INDIGO
3. Фортуна дама переменчивая
Фантастика:
космическая фантастика
5.63
рейтинг книги
На границе империй. Том 3

Точка Бифуркации

Смит Дейлор
1. ТБ
Фантастика:
боевая фантастика
7.33
рейтинг книги
Точка Бифуркации

Ее андалузский друг

Содерберг Александр
1. София Бринкман
Детективы:
прочие детективы
5.00
рейтинг книги
Ее андалузский друг

Мечник Вернувшийся 1000 лет спустя. Том 2

Ткачев Андрей Юрьевич
2. Вернувшийся мечник
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Мечник Вернувшийся 1000 лет спустя. Том 2

Евангелие от зверя

Головачев Василий Васильевич
Шедевры отечественной фантастики
Фантастика:
фэнтези
альтернативная история
4.57
рейтинг книги
Евангелие от зверя

Кодекс Крови. Книга ХIII

Борзых М.
13. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХIII

Князь Целитель 4

Ткачев Андрей Юрьевич
4. Князь Целитель
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Князь Целитель 4

Идеальный мир для Лекаря

Сапфир Олег
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря