Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » Программирование мобильных устройств на платформе .NET Compact Framework - Иво Салмре

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 185 186 187 188 189 190 191 192 193 ... 206
Перейти на страницу:

 Dim childOf_RootNode As System.Xml.XmlElement

 For Each childOf_RootNode In _

  rootElement.ChildNodes

  'Если это узел UserInfo, то мы хотим просмотреть его содержимое

  If (childOf_RootNode.Name = XML_USERINFO_TAG) Then

   gotUserInfoData = True

   'Пользовательские данные найдены

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

   'Загрузить каждый из подэлементов

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

   Dim child_UserDataNode As System.Xml.XmlElement

   For Each child_UserDataNode In _

    childOf_RootNode.ChildNodes

    'Идентификатор пользователя (UserID)

    If (child_UserDataNode.Name = XML_USERID_TAG) Then

     userId = CInt(child_UserDataNode.InnerText)

     'ФИО пользователя (UserName)

    ElseIf (child_UserDataNode.Name = XML_NAMEINFO_TAG) Then

     Dim child_Name As System.Xml.XmlElement

      For Each child_Name In child_UserDataNode.ChildNodes

      'Имя (FirstName)

      If (child_Name.Name = XML_FIRSTNAME_TAG) Then

       firstName = child_Name.InnerText

       'Фамилия (LastName)

      ElseIf (chi1d_Name.Name = XML_LASTNAME_TAG) Then

       lastName = child_Name.InnerText

      End If

     Next 'Конец цикла разбора UserName

    End If 'Конец оператора if, осуществляющего проверку UserName

   Next 'Конец цикла разбора UserInfo

  End If 'Конец оператора if, осуществляющего проверку UserInfo

 Next 'Конец цикла разбора корневого узла

 If (gotUserInfoData = False) Then

  Throw New Exception("Данные пользователя в XML-документе не найдены!")

 End If

End Sub

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

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

' [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 xmlDocument As System.Xml.XmlDocument = _

  New System.Xml.XmlDocument

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

 'Добавить элемент документа высшего уровня

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

 Dim rootNodeForDocument As System.Xml.XmlElement

 rootNodeForDocument = xmlDocument.CreateElement( _

  XML_ROO T_TAG)

 xmlDocument.AppendChild(rootNodeForDocument)

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

 'Добавить данные в элемент UserInfo

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

 Dim topNodeForUserData As System.Xml.XmlElement

 topNodeForUserData = xmlDocument.CreateElement( _

  XML_USERINFO_TAG)

 rootNodeForDocument.AppendChild(topNodeForUserData)

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

 'Добавить значение UserID в наш документ

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

 'Создать подузел для информации о пространстве имен

 Dim subNodeForUserID As System.Xml.XmlElement

 subNodeForUserID = _

  xmlDocument.CreateElement(XML_USERID_TAG)

 subNodeForUserID.InnerText = _

  System.Convert.ToString(userId)

 'Присоединить подузел UserID к узлу высшего уровня

 topNodeForUserData.AppendChild(subNodeForUserID)

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

 'Добавить все значения NameInfo в наш документ

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

 'Создать подузел для информации о пространстве имен

 Dim subNodeForNameInfo As System.Xml.XmlElement

 subNodeForNameInfo = xmlDocument.CreateElement( _

  XML_NAMEINFO_TAG)

 'Имя (FirstName)

 Dim subNodeFirstName As System.Xml.XmlElement

 subNodeFirstName = xmlDocument.CreateElement( _

  XML_FIRSTNAME TAG)

 subNodeFirstName.InnerText = firstName

 'Фамилия (LastName)

 Dim subNodeLastName As System.Xml.XmlElement

 subNodeLastName = xmlDocument.CreateElement( _

  XML_LASTNAME_TAG)

 subNodeLastName.InnerText = lastName

 'Присоединить подузлы имени и фамилии к родительскому узлу

 'NameInfo

 subNodeForNameInfo.AppendChild(subNodeFirstName)

 subNodeForNameInfo.AppendChild(subNodeLastName)

 'Присоединить подузел NameInfo (вместе с его дочерними узлами)

 'к узлу высшего уровня

 topNodeForUserData.AppendChild(subNodeForNameInfo)

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

 'Сохранить документ

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

 Try

  xmlDocument.Save(fileName)

 Catch ex As System.Exception

  MsgBox( _

   "Ошибка при сохранении XML-документа - " + ex.Message)

 End Try

End Sub 'Конец функции

End Class 'Конец класса

Листинг 10.2. Вызов кода, предназначенного для сохранения и загрузки XML-документа

Private Sub Button1_Click(ByVal sender As System.Object, _

 ByVal e As System.EventArgs) Handles Button1.Click

 Const FILENAME As String = "TestFileName.XML"

 'Сохранить, используя XML DOM

 SaveAndLoadXML_UseDOM.XML_SaveUserInfo(FILENAME, 14, "Ivo", _

  "Salmre")

 'Сохранить, используя объект однонаправленной записи XMLWriter

 'SaveAndLoadXML_UseReaderWriter.XML_SaveUserInfo(FILENAME, _

 ' 18, "Ivo", "Salmre")

 Dim userID As Integer

 Dim firstName As String

 Dim lastName As String

 'Загрузить, используя XML DOM

 SaveAndLoadXML_UseDOM.XML_LoadUserInfo(FILENAME, userID, _

  firstName, lastName)

 'Загрузить, используя объект однонаправленного чтения XMLReader

 'SaveAndLoadXML_UseReaderWriter.XML_LoadUserInfo(FILENAME, _

 ' userID, firstName, lastName)

 MsgBox("Готово! " + _

  userID.ToString() + ", " + lastName + ", " + firstName)

End Sub

Листинг 10.3. Использование однонаправленного чтения/записи XML-данных для загрузки XML-документа из файла и его сохранения

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: Загруженное имя пользователя

1 ... 185 186 187 188 189 190 191 192 193 ... 206
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Программирование мобильных устройств на платформе .NET Compact Framework - Иво Салмре.
Комментарии