Kniga-Online.club
» » » » Владимир Волков - Программирование для карманных компьютеров

Владимир Волков - Программирование для карманных компьютеров

Читать бесплатно Владимир Волков - Программирование для карманных компьютеров. Жанр: Программирование издательство неизвестно, год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

Код простейшего XML-файла показан в листинге 6.4.

Листинг 6.4

<?xml version="1.0" encoding="windows-1251"?>

<Y2005>

<Date>

<Index value = "0"/>

</Date>

<Date>

<Index value = "1"/>

</Date>

<Date>

<Index>2

</Index>

</Date>

</Y2005>

Первая строка является описанием XML-документа. Она позволяет указывать версию XML и кодировку, в которой записан документ. Затем следует тег с именем Y2005. Этот тег состоит из открывающей (<Y2005>) и закрывающей (</Y2005>) частей. Внутри тега Y2005 расположены теги с именем Date. Все три тега Date не пустые, поэтому тоже имеют открывающую и закрывающую часть. Внутри тегов Date вложены теги Index. Первые два тега Index пустые, они состоят из одной части, которая одновременно открывает и закрывает этот тег. Внутри тега Index в первых двух случаях записано значение value. Значения, записанные внутри скобок тега, называются атрибутами. Любой тег может иметь любое количество атрибутов, но только одно значение. Значение записывается между открывающей и закрывающей частью тега.

Любой XML-документ должен начинаться с одного тега, который называется корневым тегом. В нашем случае корневым тегом является тег Y2005.

Что нам надо хранить в нашем XML-документе? Это должна быть информация о дате, для которой мы выполняем хронометраж, о категории работы, о времени начала работы, о времени ее окончания и примечания к каждой записи, если они необходимы. Структура нашего XML-файла приведена в листинге 6.5.

Листинг 6.5

Заголовочная часть:

<?xml version="1.0" encoding="windows-1251"?>

Корневой тег:

<Y2005>

Столько тегов Date, сколько дней мы будем контролировать:

<Date value = В«20.08.2005В» Cnt = "1">

Столько тегов Index, сколько отрезков времени мы учтем за день:

<Index Category="Work1" StartOf= В«00.00В» EndOf = В«00.20В» Note=""/>

<Index Category="Misc" StartOf= В«00.20В» EndOf = В«00.40В» Note=""/>

</Date>

…

</Y2005>

В каждом теге Date есть два атрибута. Атрибут value несет в себе дату, а Cnt – количество записей за день. В каждом теге Index есть четыре атрибута. В атрибуте Category указывается категория занятия, в атрибуте StartOf – время начала, в атрибуте EndOf – время окончания, а атрибут Note предназначен для хранения примечания.

Файл с такой структурой должен быть создан при первом запуске программы, прочитан и отредактирован при каждом последующем запуске.

Упражнение 6.2 (продолжение)

17. При запуске нашего приложения необходимо проверить, существует ли файл 2005.xml, в котором записаны результаты контроля времени, и файл Category.xml, в котором содержится список категорий. Если данные файлы не существуют, то их надо создать. Если файлы все еще существуют, то их нужно загрузить. Эти операции будут проводиться в обработчике события загрузки основной формы приложения. Но перед этим в класс формы нужно добавить две переменные. В окне Solution Explorer нужно выделить файл Form1.vb и из контекстного меню выполнить для этого файла команду View Code. Затем в самое начало кода нужно добавить строки, приведенные в листинге 6.6.

Листинг 6.6

Public Class Form1

Inherits System.Windows.Forms.Form

Friend WithEvents ListView1 As System.Windows.Forms.ListView

Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu

'Добавленные переменные

Dim D As DateTime

Dim dirStr As String

18. Теперь можно создать процедуру обработчика события загрузки формы, код которой приведен в листинге 6.7. Листинг 6.7

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

Handles MyBase.Load

'Если файл с данными отсутствует в текущем каталоге, мы его создаем, для

'этого сначала получаем полный путь каталога, в котором расположена

'программа, в строковую переменную dirStr

dirStr = IO.Path.GetDirectoryName_

(Reflection.Assembly.GetExecutingAssembly.GetName.CodeBase.ToString)

'Проверяем, есть ли файл c заданным именем по полученному пути

If Not System.IO.File.Exists(dirStr + В«2005.xmlВ») Then

'Если файла нет – создаем его

'Создаем экземпляр XmlDocument

Dim myxmlDoc As New Xml.XmlDocument

'Создаем корневой тег и добавляем его к документу

Dim oROOT As Xml.XmlElement = myxmlDoc.CreateElement(В«Y2005В»)

myxmlDoc.AppendChild(oROOT)

'Получаем текущую дату в переменную myDate

Dim myDate As Date = Date.Now

myDate = DateAdd(DateInterval.Day, – 1, myDate)

'Заполняем файл тегами Data от сегодняшнего дня до конца текущего года

While Not myDate.ToShortDateString = В«31.12.2005В»

myDate = DateAdd(DateInterval.Day, 1, myDate)

Dim oData As Xml.XmlElement = myxmlDoc.CreateElement(В«DataВ»)

oROOT.AppendChild(oData)

Dim oValue As Xml.XmlAttribute = _ myxmlDoc.CreateAttribute(В«valueВ»)

Dim oIndex As Xml.XmlAttribute = _ myxmlDoc.CreateAttribute(В«CntВ»)

oValue.InnerText = myDate.ToShortDateString

oIndex.InnerText = В«-1В»

oData.SetAttributeNode(oValue)

oData.SetAttributeNode(oIndex)

End While

'Создаем заголовочную часть XML файла

Dim myPI As Xml.XmlProcessingInstruction = _

myxmlDoc.CreateProcessingInstruction_

(В«xmlВ», "version= 1.0 encoding='windows-1251 ")

myxmlDoc.InsertBefore(myPI, myxmlDoc.ChildNodes(0))

'Сохраняем созданный документ

myxmlDoc.Save(dirStr + В«2005.xmlВ»)

End If

'Если файл со списком категорий отсутствует в текущем каталоге, мы его

'создаем с пятью категориями Work1, Work2, Work3, Misc, Trash

If Not System.IO.File.Exists(dirStr + В«Category.xmlВ») Then

If Not System.IO.File.Exists(dirStr + В«Category.xmlВ») Then

Dim myxmlDoc As New Xml.XmlDocument

Dim oROOT As Xml.XmlElement = myxmlDoc.CreateElement(В«CategotyВ»)

myxmlDoc.AppendChild(oROOT)

Dim oWork1 As Xml.XmlElement = myxmlDoc.CreateElement(В«Work1В»)

oROOT.AppendChild(oWork1)

Dim oWork2 As Xml.XmlElement = myxmlDoc.CreateElement(В«Work2В»)

oROOT.AppendChild(oWork2)

Dim oWork3 As Xml.XmlElement = myxmlDoc.CreateElement(В«Work3В»)

oROOT.AppendChild(oWork3)

Dim oMisc As Xml.XmlElement = myxmlDoc.CreateElement(В«MiscВ»)

oROOT.AppendChild(oMisc)

Dim oTrash As Xml.XmlElement = myxmlDoc.CreateElement(В«TrashВ»)

oROOT.AppendChild(oTrash)

Dim myPI As Xml.XmlProcessingInstruction = _

myxmlDoc.CreateProcessingInstruction_

(В«xmlВ», "version= 1.0 encoding='windows-1251 ")

myxmlDoc.InsertBefore(myPI, myxmlDoc.ChildNodes(0))

myxmlDoc.Save(dirStr + В«Category.xmlВ»)

End If

D = DateTime.Now

Label1.Text = System.DateTime.Today.ToShortDateString

'Вызываем процедуру загрузки данных в ListView

Data_Load(System.DateTime.Today.ToShortDateString)

End Sub

Чтобы создать и сохранить новый XML-документ, мы воспользовались классом XMLDocument, который позволяет представить существующий XML-документ в виде объекта с набором полей и методов для манипуляции этими полями. Он позволяет создавать и удалять элементы XML как по имени, так и по индексу, осуществлять поиск нужного элемента, заменять или дублировать элементы, сохранять измененный документ. Единственным недостатком этого класса является то, что документ полностью загружается в создаваемый объект. Поскольку на Pocket PC и файловая система, и оперативная память программы физически являются одним и тем же устройством, то просто происходит дублирование информации на время работы с документом.

19. Процедура загрузки данных для текущего дня в компонент ListView приведена в листинге 6.8.

Перейти на страницу:

Владимир Волков читать все книги автора по порядку

Владимир Волков - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Программирование для карманных компьютеров отзывы

Отзывы читателей о книге Программирование для карманных компьютеров, автор: Владимир Волков. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*