<?xml version='1.0'?>

<Inventory xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>

 <Products>

  <ProductID>100</ProductID>

  <ProductName>Product Thing</ProductName>

  <SupplierID>10</SupplierID>

 </Product>

 <Book>

  <ProductID>101</ProductID>

  <ProductName>How to Use Your New Product Thing</ProductName>

  <SupplierID>10</SupplierID>

  <ISBN>123456789</ISBN>

 </Book>

</Inventory>

Мы получили тот же самый XML, что и в предыдущем примере. Чтобы десериализовать этот объект и воссоздать объект на основе Inventory, с которого мы начали, необходимо создать все те же объекты XmlAttributes, XmlElementAttribute и XmlAttributeOverrides, которые создаются при сериализации объекта. Когда это будет сделано, можно прочитать XML и воссоздать объект Inventory, как это делалось раньше. Вот код для десериализации объекта Inventory:

private void button2_Click(object sender, System.EventArgs e) {

 XmlAttributes attrs=new XmlAttributes();

 attrs.XmlElements.Add(new XmlElementAttribute('Book', typeof(BookProduct)));

 attrs.XmlElements.Add(new XmlElementAttribute('Product', typeof(Product)));

 XmlAttributeOverrides attrOver=new XmlAttributeOverrides();

 attrOver.Add(typeof(Inventory), 'InventoryItems', attrs);

 Inventory newInv;

 FileStream f=new FileStream('..\..\..\inventory.xml', FileMode.Open);

 XmlSerializer newSr=new XmlSerializer(typeof(Inventory), attrOver);

 newInv=(Inventory)newSr.Deserialize(f);

 foreach(Product prod, in newInv.InventoryItems) listBox1.items.Add (prod.ProductName);

 f.Close();

}

Отметим, что первые несколько строк кода идентичны коду, который использовался для сериализации объекта.

Пространство имен XmlSerialize предоставляет мощный набор инструментов. Сериализуя объекты в XML, а не в двоичный формат, мы получаем дополнительные возможности, что может действительно увеличить гибкость проектирования.

Заключение

В этой главе рассматривались широкие возможности пространства имен System.Xml платформы .NET. Было показано, как прочитать и записать документы XML с помощью классов на основе XMLReader и XMLWriter, как в .NET реализована DOM и как использовать возможности DOM. Мы увидели, что XML и ADO.NET действительно очень тесно связаны. DataSet и документ XML являются двумя различными представлениями одной и той же базовой архитектуры. Мы сериализовали объекты в XML и смогли вернуть их обратно с помощью вызова пары методов. Комбинация Reflection и XMLSerilization приводит к некоторым уникальным конструкциям. И, конечно, были рассмотрены XPath и XslTransform. В течение ближайших нескольких лет XML станет, если уже не стал, важной частью разработки приложений. Платформа .NET сделала доступным мощный набор инструментов для работы с XML. 

Глава 14

Операции с файлами и реестром

В этой главе будет рассмотрено выполнение в C# задач, включающих чтение и запись в файлы и в системный реестр. В частности, будут охвачены следующие вопросы:

□ Исследование структуры каталога, выяснение, какие файлы и папки присутствуют и проверка их свойств

□ Перемещение, копирование и удаление файлов и папок

□ Чтение и запись текста в и из файлов

□ Чтение и запись в реестр

Компания Microsoft предоставила очень интуитивную объектную модель, охватывающую эти области, и в ходе этой главы мы покажем, как использовать классы на основе .NET для выполнения упомянутых выше задач. Для случая операций с файловой системой соответствующие классы почти все находятся в пространстве имен System.IO, в то время как операции с реестром связаны с парой классов в пространстве имен System.Win32.

Классы на основе .NET включают также ряд классов и интерфейсов в пространстве имен System.Runtime.Serilization, которые связаны с сериализацией, то есть процессом преобразования некоторых данных (например, содержимого документа) в поток байтов для хранения в каком либо месте. Мы не будем рассматривать эти классы в данной главе, так как сосредоточимся на классах, которые предназначены для прямого доступа к файлам.

Отметим, что хотя безопасность влияет на все области, но особенно она важна при модификации файлов или записей реестра. Система безопасности рассматривается отдельно в главе 25. В этой главе мы будем предполагать, что имеются достаточные права доступа для выполнения всех примеров, которые модифицируют файлы или записи реестра, что обеспечивается, например, при использовании учетной записи с полномочиями администратора.

Управление файловой системой 

Классы, которые используются для просмотра файловой системы и выполнения таких операций, как перемещение, копирование и удаление файлов, показаны на следующей диаграмме. Пространство имен каждого класса показано в скобках под именем каждого класса на диаграмме:

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату