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

ЖАНРЫ

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

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

readSuccess = xmlReader.Read

End While

'Если мы оказались в этом месте программы, не покинув

'XML-дескриптора UserInfo, то с XML-данными, которые мы считываем,

'что-то не так

Throw New Exception("He найден элемент UserInfo в XML-документе!")

finished reading_wanted_data:

'Закрыть файл, поскольку работа с ним закончена!

xmlReader.Close

End Sub

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

'Вспомогательный код, ответственный за принятие решения

'относительно того, в какое состояние необходимо перейти,

'когда встречается закрывающий дескриптор

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

Private Shared Function LoadHelper_EndElementEncountered( _

ByRef currentReadLocation As ReadLocation) As Boolean

Select Case (currentReadLocation)

'Если мы покидаем узел Name, то должны вернуться

'обратно в узел UserInfo

Case ReadLocation.inName

currentReadLocation = ReadLocation.inUserInfo

'Если мы покидаем узел FirstName, то должны вернуться

'обратно в узел Name

Case ReadLocation.inFirstName

currentReadLocation = ReadLocation.inName

'Если мы покидаем узел LastName, то должны вернуться

'обратно в узел Name

Case ReadLocation.inLastName

currentReadLocation = ReadLocation.inName

'Если мы покидаем узел UserID, то должны вернуться

'обратно в узел UserInfo

Case ReadLocation.inUserID

currentReadLocation = ReadLocation.inUserInfo

'Если мы покидаем узел UserInfo, то мы только что

'закончили чтение данных в узлах UserID, FirstName

'и LastName

'

'Можно выйти из цикла, поскольку у нас уже есть вся

'информация, которую мы хотели получить!

Case ReadLocation.inUserInfo

Return False 'Анализ должен быть прекращен

End Select

Return True

'Продолжить анализ

End Function

Private Shared Sub LoadHelper_NewElementEncountered( _

ByVal nodeName As String, _

ByRef currentReadLocation As ReadLocation)

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

'Мы вошли в новый элемент!

'В какое состояние переход возможен, зависит от того,

'в каком состоянии мы находимся в данный момент

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

Select Case (currentReadLocation)

'Если мы находимся в узле AllMyData, то переход возможен

'в узлы, которые указаны ниже

Case (ReadLocation.inAllMyData)

If (nodeName = XML_USERINFO_TAG) Then

currentReadLocation = ReadLocation.inUserInfo

End If

'Если мы находимся в узле UserInfo, то переход возможен

'в узлы, которые указаны ниже

Case (ReadLocation.inUserInfo)

If (nodeName = XML_USERID_TAG) Then

currentReadLocation = ReadLocation.inUserID

ElseIf (nodeName = XML_NAMEINFO_TAG) Then

currentReadLocation = ReadLocation.inName

End If

'Если мы находимся в узле Name, то переход возможен

'в узлы, которые указаны ниже

Case (ReadLocation.inName)

If (nodeName = XML_FIRSTNAME_TAG) Then

currentReadLocation = ReadLocation.inFirstName

ElseIf (nodeName = XML LASTNAME_TAG) Then

currentReadLocation = ReadLocation.inLastName

End If

End Select

End Sub

End Class

Примеры к главе 11 (производительность и графика)

Листинг 11.1. Заполнение данными и очистка от них элементов управления TreeView с использованием альтернативных стратегий

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

'Примечание #1: В этом примере используется класс PerformanceSampling,

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

' вы включили этот класс в свой проект.

'Примечание #2: Этот код необходимо включить в класс Form, содержащий элемент

' управления TreeView и кнопки Button, к которым подключены

' приведенные ниже функции xxx_Click.

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

'Количество элементов, которые необходимо поместить в элемент

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