Литмир - Электронная Библиотека
Содержание  
A
A

  //<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><Userlnfo>

  xmlTextWriter.WriteEndElement(); //Закрыть дескриптор UserInfo

  //<Root>

  xmlTextWriter.WriteEndElement(); //Закрыть дескриптор документа

  //

  xmlTextWriter.Close();

 }

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

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

 //

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

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

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

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

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

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

  ReadLocation currentReadLocation;

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

  userId = 0;

  firstName = "";

  lastName = "";

  System.Xml.XmlTextReader xmlReader = new System.Xml.XmlTextReader(fileName);

  xmlReader.WhitespaceHandling = System.Xml.WhitespaceHandling.None;

  bool readSuccess;

  readSuccess = xmlReader.Read();

  if (readSuccess == false) {

   throw new System.Exception("Отсутствуют XML-данные для чтения!");

  }

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

  if (xmlReader.Name != XML_ROOT_TAG) {

   throw new System.Exception("Корневой дескриптор отличается от ожидаемого!");

  }

  //Отметить текущее местоположение в документе

  currentReadLocation = ReadLocation.inAllMyData;

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

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

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

  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);

98
{"b":"947732","o":1}