Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прога - ответы2.docx
Скачиваний:
19
Добавлен:
23.04.2019
Размер:
206.38 Кб
Скачать

Работа с xml при помощи linq to xml

API-интерфейс LINQ to XML предлагает альтернативный способ построения, манипулирования и опроса XML-документов, который использует намного более функциональный подход, чем модель DOM из System.Xml. Вместо построения XML-документа за счет индивидуальной сборки элементов и обновления дерева XML через набор вызовов функций, код пишется сверху вниз.

Пример создания аналогичного предыдущему XML-документа

XElement doc =

new XElement("recipe", new XAttribute("name", "хлеб"),

new XElement("title", "Простой хлеб"),

new XElement("ingredient", new XText("Мука"),

new XAttribute("amount", "3"), new XAttribute("unit", "стакан")),

new XElement("ingredient", new XText("Дрожжи"),

new XAttribute("amount", "0.25"), new XAttribute("unit", "грамм")),

new XComment("This is comment")

);

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

Ancestor ()

Возвращает отфильтрованную коллекцию элементов-предков данного элемента

Attributes ()

Возвращает отфильтрованную коллекцию атрибутов элемента

Descendants<T>

Возвращает отфильтрованную коллекцию элементов-потомков данного элемента

Elements<T>

Возвращает коллекцию дочерних элементов данного элемента

Nodes<T>

Возвращает коллекцию дочерних узлов данного элемента

Remove ()

Удаляет заданный элемент из родительского элемента

Пример:

doc.Elements("ingredient").Remove();

Выводы:

  • XML – текстовый формат для представления структурированных данных в виде дерева.

  • Для работы с XML в .NET обычно используются классы пространства имен System.Xml или механизм LINQ to XML.

  • System.Xml предоставляет классы вида XmlDocument, XmlElement, XmlAttribute, XmlComment и др. Формирование структуры осуществляется методами вида CreateElement/ CreateAttribute/ CreateComment, AddChild()/RemoveChild(), SetAttribute() и др. Чтение — методами и свойствами вида GetElementsByTagName(), GetElementById(), ChildNodes, NextSibling/PreviousSibling, Value и др.

  • System.Xml.Linq позволяет создавать XML-документы в более наглядной манере, задавая структуру при помощи конструкторов объектов с переменным числом параметров. Используются такие классы как XElement, XAttribute, XComment и др. Для чтения и изменения узлов дерева используются вызовы вида Elements(“имя элемента”), Attributes(“имя атрибута”) и др.

  1. Потоковый ввод-вывод. Файлы. Работа с файлами и каталогами. Пространство имен System.Io

Типы пространства имен System.IO:

BinaryReader

BinaryWnter

Эти классы позволяют читать и записывать элементарные типы данных (целочисленные, булевские, строковые и т.п.) в двоичном виде

BufferedStream

Этот класс предоставляет временное хранилище для потока байтов, которые могут затем быть перенесены в постоянные хранилища

Directory

Directorylnfo

Эти классы используются для работы с каталогами файловой системы. Тип Directory предоставляет для этого статические члены. Тип Directorylnfo обеспечивает аналогичную функциональность через экземпляр объекта

Drivelnfo

Этот класс предоставляет детальную информацию относительно дисковых устройств, используемых данной машиной

File

Filelnfo

Эти классы служат для работы с файлами в файловой системе. Тип File представляет функциональность через статические члены. Тип Filelnfo обеспечивает аналогичную функциональность через экземпляр объекта

FileStream

Этот класс обеспечивает произвольный доступ к файлу с данными, представленными в виде потока байт

FileSystemWatcher

Этот класс позволяет отслеживать изменения внешних файлов в определенном каталоге

MemoryStream

Этот класс обеспечивает произвольный доступ к данным, хранящимся в памяти, а не в физическом файле

Path

Этот класс выполняет операции над типами System.String, содержащими информацию о пути к файлу или каталогу в независимой от платформы манере

StreamWriter

StreamReader

Эти классы используются для хранениия (и извлечения) текстовой информации из файла. Эти классы не поддерживают произвольного доступа к файлу

StringWriter

StringReader

Подобно классам StreamWriter/StreamReader, эти классы также работают с текстовой информацией. Однако лежащим в основе хранилищем является строковый буфер, а не физический файл