Шрифт:
Листинг 10.3. Использование однонаправленного чтения-записи XML-данных для загрузки XML-документа из файла и его сохранения
using System;
public class SaveAndLoadXML UseReaderWriter {
//XML-дескрипторы, которые мы будем использовать в своем документе
const string XML_ROOT_TAG = "AllMyData";
const string XML_USERINFO_TAG = "UserInfo";
const string XMI_USERID_TAG = "UserID";
const string XML_NAMEINFO_TAG = "Name";
const string XML_FIRSTNAME_TAG = "FirstName";
const string XML_LASTNAME TAG = "LastName";
//Набор состояний, отслеживаемых по мере чтения данных
private enum ReadLocation {
inAllMyData,
inUserInfo,
inUserID,
inName,
inFirstName,
inLastName,
}
//--------------------------------------------------------------------
//Сохраняет пользовательское состояние
//
// [in] fileName: Имя файла, используемого для сохранения данных
// [in] userId: Идентификатор пользователя, который мы хотим сохранить
// [in] firstName: Имя пользователя, которое мы хотим сохранить
// [in] lastName: Фамилия пользователя, которую мы хотим сохранить
//--------------------------------------------------------------------
public static void XML_SaveUserInfo(string fileName, int userId,string firstName, string lastName) {
System.Xml.XmlTextWriter xmlTextWriter;
xmlTextWriter =new System.Xml.XmlTextWriter(fileName, System.Text.Encoding.Default);
//Записать содержимое документа!
//<Root>
xmlTextWriter.WriteStartElement(XML_ROOT_TAG);
//<Root>
xmlTextWriter.WriteStartElement(XML_USERINFO_TAG);
//<Root><UserID>
//<Root><UserInfo>
xmlTextWriter.WriteStartElement(XML_NAMEINFO_TAG);
//<Root><UserInfo><Name>
xmlTextWriter.WriteStartElement(XML_FIRSTNAME_TAG);
//<Root><UserInfo><Name><FirstName>
xmlTextWriter.WriteString(firstName); //Запись значения
xmlTextWriter.WriteEndElement; //Закрыть дескриптор имени
//<Root><UserInfo><Name>
xmlTextWriter.WriteStartElement(XML_LASTNAME_TAG);
//<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;
}
//--------------------------------------------------------------
//Загружает пользовательское состояние