Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Турчин Д.Е. - Архитектура ИС. Практикум 2014 (И...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
5.42 Mб
Скачать

7.4. Контрольные вопросы

  1. Для чего предназначена технология LINQ?

  2. Какие выделяют разновидности LINQ по источнику данных?

  3. Что такое неявно типизированные переменные и как они используются в LINQ?

  4. Из каких этапов состоит выполнение запроса LINQ?

  5. Каков синтаксис для простейшего выражения запроса LINQ?

  6. Как задается фильтрация данных в выражении запроса LINQ?

  7. Каким образом задается сортировка результатов запроса LINQ?

  8. Как можно сгруппировать данные запроса LINQ по определенному ключу?

  9. Для чего предназначена операция join в выражении запроса LINQ?

  10. Что называют анонимным типом и как он записывается в выражении запроса LINQ?

8. Основы работы с XML-документами при помощи LINQ to XML

8.1. Цель и задачи работы

Цель работы – приобрести умение работать с документами XML с помощью технологии LINQ.

Основные задачи работы:

  • ознакомиться с технологией LINQ to XML;

  • научиться создавать и модифицировать XML-документы с помощью классов LINQ to XML;

  • освоить создание запросов LINQ к XML-документам.

Работа рассчитана на 6 часов.

8.2. Основные теоретические сведения

8.2.1. Основные классы LINQ to XML. Осевые методы LINQ to XML

Основные классы LINQ to XML.

Программная модель LINQ to XML позволяет выражать структуру XML-данных в коде на языках Visual Basic и C# и предлагает простой способ создания, манипулирования и сохранения XML-данных. Также с помощью выражений запросов LINQ можно легко извлекать информацию из XML-документов.

Пространство имен System.Xml.Linq содержит классы, представляющие различные аспекты XML-документа (элементы, атрибуты, пространства имен XML и др.) (рис. 8.1).

Основными классы пространства имен System.Xml.Linq являются:

  • XDocument – представляет целиком весь XML-документ;

  • XElement – представляет определенный элемент внутри XML-документа;

  • XAttribute – представляет атрибут определенного элемента;

  • XDeclaration – представляет открывающее объявление XML-документа;

  • XComment – представляет комментарий XML;

  • XName – представляет имя элемента или атрибута XML;

  • XNamespace – представляет пространство имен XML;

  • XNode – представляет узел на дереве XML-документа (элемент, атрибут, комментарий и др.).

Рис. 2.1. Классы пространства имен System.Xml.Linq в окне обозревателя объектов (Visual Studio 2012)

В качестве свойства класса XDocument можно отметить Root, которое получает корневой элемент данного документа.

Можно отметить следующие общие методы класса XDocument:

Load(string fileName) – создает новый объект XDocument из файла с именем fileName (статический метод);

Parse(string text) – создает новый объект XDocument из строки text (статический метод);

Save(string fileName) – преобразует объект XDocument в XML-файл с именем fileName;

Element(XName name) – возвращает первый (в порядке следования) дочерний элемент с именем name;

Elements(XName name) – возвращает коллекцию дочерних элементов для данного документа; в состав коллекции входят только элементы с именем name.

Класс XElement обозначает элемент XML и является одним из основных классов в LINQ to XML. Этот класс можно использовать для создания элементов, изменения содержимого элемента, добавления, изменения или удаления дочерних элементов, добавления к элементам атрибутов или преобразования содержимого элемента в текстовую форму.

Некоторые свойства класса XElement:

Name – получает или задает имя элемента;

Value – получает или задает текстовое содержимое элемента;

Parent – получает родительский элемент для данного элемента.

Некоторые методы класса XElement:

Element(XName name) – возвращает первый дочерний элемент объекта XElement, имеющий указанное имя name;

Attribute(XName name) – возвращает атрибут XAttribute, имеющий имя name;

Attribute() – возвращает коллекцию IEnumerable всех атрибутов XAttribute.

Пример 8.1. Создание XML-документа с помощью консольного приложения на языке C#.

Требуется разработать консольное приложение на языке C#, которое, используя классы LINQ to XML, создаёт с нуля одну ветвь XML-документа, приведённого в примере 1.1. Кроме того, приложение должно загружать полученный документ и отображать его код в окне консоли.

Исходный код полученного приложения представлен в листинге 8.1.

Листинг 8.1. Исходный код консольного приложения

Результат работы консольного приложения показан на рис. 8.2.

Рис. 8.2. Работа консольного приложения

После выполнения метода Main() консольного приложения в файл «FragmCommService.xml» будут записаны данные, представленные в листинге 8.2. ❒

Листинг 8.2. XML-код полученного документа

Пример 8.2. Создание XML-документа из массива объектов с помощью консольного приложения на языке C#.

Требуется получить XML-документ на основе массива объектов, созданного в примере 7.1.

Для этого добавим в код консольного приложения из примера 7.1 метод GenerXML(), приведенный в листинге. 8.3. Кроме того, в процедуре Main() необходимо добавить вызов этого метода с передачей ему массива объектов:

GenerXML(products, @"H:\XML\products.xml");

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

Листинг 8.3. Код метода для создания XML-документа из массива объектов

Листинг 8.4. Код полученного XML-документа