Чтобы создать и сохранить новый XML-документ, мы воспользовались классом XMLDocument, который позволяет представить существующий XML-документ в виде объекта с набором полей и методов для манипуляции этими полями. Он позволяет создавать и удалять элементы XML как по имени, так и по индексу, осуществлять поиск нужного элемента, заменять или дублировать элементы, сохранять измененный документ. Единственным недостатком этого класса является то, что документ полностью загружается в создаваемый объект. Поскольку на Pocket PC и файловая система, и оперативная память программы физически являются одним и тем же устройством, то просто происходит дублирование информации на время работы с документом.
19. Процедура загрузки данных для текущего дня в компонент ListView приведена в листинге 6.8.
Листинг 6.8Private Sub Data_Load(ByVal MyDate As String)
\'Открываем файл, для это сначала получаем полный путь каталога,
\'в котором расположена программа в строковую переменную dirStr
dirStr = IO.Path.GetDirectoryName_
(Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase.ToString)
\'Создаем экземпляр объекта XmlTextReader
Dim xmlrdrMy As New Xml.XmlTextReader(dirStr + «\2005.xml»)
Dim MyCount, MyIndex As Integer
Dim lvItem As ListViewItem
\'Не реагируем на пробелы и управляющие символы
xmlrdrMy.WhitespaceHandling = xmlrdrMy.WhitespaceHandling.None
\'Переходим к содержимому, пропуская заголовочную часть
xmlrdrMy.MoveToContent()
\'В цикле считываем значения из файла, добавляем новую строку в ListView
\'для каждого тега Index и копируем значения атрибутов тега Index в
\'соответствующие поля записи ListView
ListView1.Items.Clear()
ListView1.Refresh()
While Not xmlrdrMy.EOF
If xmlrdrMy.Name = «Data» Then
If xmlrdrMy.GetAttribute(«value») = MyDate Then
MyIndex = CInt(xmlrdrMy.GetAttribute(«Cnt»))
For MyCount = 0 To MyIndex – 1
xmlrdrMy.Read()
lvItem = New ListViewItem(xmlrdrMy.GetAttribute(«Category»))
ListView1.Items.Add(lvItem)
ListView1.Items.Item(MyCount). SubItems.Add_
(xmlrdrMy.GetAttribute(«StartOf»))
ListView1.Items.Item(MyCount). SubItems.Add(xmlrdrMy.GetAttribute(«EndOf»))
ListView1.Items.Item(MyCount). SubItems.Add(xmlrdrMy.GetAttribute(«Note»))
Next
End If
End If
\'Считываем следующий элемент из файла XML
xmlrdrMy.Read()
End While
\'Закрываем файл
xmlrdrMy.Close()
End Sub