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

//Демонстрирует сохранение и загрузку файлов с

//использованием объектной модели документов XML

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

public class SaveAndLoadXML_UseDOM {

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

 const string XML_ROOT_TAG = "AllMyData";

 const string XML_USERINFO_TAG = "UserInfo";

 const string XML_USERID_TAG = "UserID";

 const string XML_NAMEINFO_TAG = "Name";

 const string XML_FIRSTNAME_TAG = "FirstName";

 const string XML_LASTNAME_TAG = "LastName";

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

 //Загружает пользовательское состояние

 //

 // [in] fileName: Имя файла, используемого для сохранения данных

 // [out] userId: Загруженный идентификатор пользователя

 // [out] firstName: Загруженное имя пользователя

 // [out] lastName: Загруженная фамилия пользователя

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

 public static void XML_LoadUserInfo(string fileName, out int userId, out string firstName, out string lastName) {

  //Начинаем с нулевых значений

  userId = 0;

  firstName = "";

  lastName = "";

  //Предполагаем, что данные еще не загружены

  bool gotUserInfoData = false;

  System.Xml.XmlDocument xmlDocument = new System.Xml.XmlDocument;

  xmlDocument.Load(fileName);

  //Получить корневой узел

  System.Xml.XmlElement rootElement;

  rootElement = (System.Xml.XmlElement)xmlDocument.ChildNodes[0];

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

  //ибо противное означает, что мы имеем дело с каким-то другим XML-файлом

  if (rootElement.Name != XML_ROOT_TAG) {

   throw new Exception("Тип корневого узла не совпадает с ожидаемым!");

  }

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

  //Простой конечный автомат для итеративного обхода всех узлов

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

  foreach(System.Xml.XmlElement childOf_RootNode in rootElement.ChildNodes) {

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

   if (childOf_RootNode.Name == XML_USERINFO_TAG) {

    gotUserInfoData = true; //Пользовательские данные найдены


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

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

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

    foreach(System.Xml.XmlElement child_UserDataNode in childOf_RootNode.ChildNodes) {

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

     if (child_UserDataNode.Name == XML_USERID_TAG) {

      userId = System.Convert.ToInt32(child_UserDataNode.InnerText);

     }

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

     else if (child_UserDataNode.Name == XML_NAMEINFO_TAG) {

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

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

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

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

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

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

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

Роберт Лав

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