Вход/Регистрация
Программирование мобильных устройств на платформе .NET Compact Framework
вернуться

Салмре Иво

Шрифт:

■ Не стоит останавливать свой выбор на XML DOM, если данные будут использоваться только в режиме чтения. DOM привносит дополнительные накладные расходы, но упрощает обратную запись данных из памяти на носитель. Если данные будут использоваться только в режиме чтения или вы планируете записывать их в другом формате, то потеряете в производительности, ничего не получая взамен.

В листинге 10.1 содержится пример кода, предназначенного для чтения и записи представленных выше XML-данных с использованием модели XML DOM.

Листинг 10.1. Использование XML DOM для сохранения данных в файле и их загрузки

using System;

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

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

//использованием объектной модели документов 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);

  • Читать дальше
  • 1
  • ...
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: