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

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

  //------------------------------------------------------

  while (readSuccess) {

   switch (xmlReader.NodeType) {

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

   case System.Xml.XmlNodeType.Element: {

    string nodeName = xmlReader.Name;

    LoadHelper_NewElementEncountered(nodeName, ref currentReadLocation);

    break;

   }

   //----------------------------------------------------

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

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

   //----------------------------------------------------

   case System.Xml.XmlNodeType.Text: {

    switch (currentReadLocation) {

    case ReadLocation.inFirstName: {

     firstName = xmlReader.Value;

     break;

    }

    case ReadLocation.inLastName: {

     lastName = xmlReader.Value;

     break;

    }

    case ReadLocation.inUserID: {

     userId = System.Convert.ToInt32(xmlReader.Value);

     break;

    }

    }

    break;

   }

   //-------------------------------------------------------------

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

   //элемента

   //

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

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

   //вернуться назад к его предку

   //-------------------------------------------------------------

   case System.Xml.XmlNodeType.EndElement: {

    bool continueParsing;

    continueParsing = LoadHelper_EndElementEncountered(ref currentReadLocation);

    if (continueParsing ==false) {

     goto finished_reading_wanted_data;

    }

    break;

   }

   default: {

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

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

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

    System.Windows.Forms.MessageBox.Show("Встретился непредвиденный XML-тип " + xmlReader.Name);

    break;

   }

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

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


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

   readSuccess = xmlReader.Read;

  }

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

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

  //мы считываем, что-то не так

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

finished_reading_wanted_data:

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

  xmlReader.Close;

 }


 //--------------------------------------------------------

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

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

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

 //--------------------------------------------------------

 private static bool LoadHelper_EndElementEncountered(ref ReadLocation currentReadLocation) {

  switch (currentReadLocation) {

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

Похожие книги

Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Эндрю Хант , Дэвид Томас , А. Алексашин

Программирование / Книги по IT
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT