Курс лекций для студентов специальности i-31 03 04 Информатика всех форм обучения Минск 2010



страница14/29
Дата09.08.2019
Размер0.64 Mb.
#126834
ТипКурс лекций
1   ...   10   11   12   13   14   15   16   17   ...   29

2.18. Технология LINQ TO XML


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

LINQ to XML содержит набор классов, сосредоточенных в пространстве имён System.Xml.Linq (рис. 2):



linq_xml_2.emf

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



    • Абстрактные классы XObject, XNode и XContainer служат основой для иерархии классов, соответствующих различным объектам XML.

    • Классы XElement и XDocument представляют XML-элемент и XML-документ соответственно.

    • Класс XAttribute служит для описания XML-атрибута.

    • Класс XText представляет текст в XML-элементе.

    • Класс XName представляет имя атрибута или элемента.

    • Классы XDeclaration, XDocumentType, XProcessingInstruction, XComment описывают соответствующие части XML-документа.

    • Статический класс Extensions содержит методы расширения для выполнения запросов к XML-данным.

Центральную роль в работе с XML-данными играют классы XElement, XDocument и XAttribute.

Создание, сохранение, загрузка XML


Для создания отдельного XML-элемента обычно используется один из конструкторов класса XElement:

public XElement(XElement other);

public XElement(XName name);

public XElement(XStreamingElement other);

public XElement(XName name, object content);

public XElement(XName name, params object[] content);

Обсудим использование четвёртой версии, которая позволяет указать имя элемента и его содержимое. Заметим, что существует неявное преобразование строки в XName. Интерпретация аргумента content производится по табл. 14.

Таблица 14

Интерпретация аргумента content


Тип или значение content

Способ обработки

string

Преобразуется в дочерний объект типа XText и добавляется как текстовое содержимое элемента

XText

Добавляет как дочерний объект  текстовое содержимое элемента

XElement

Добавляется как дочерний элемент

XAttribute

Добавляется как атрибут элемента

XProcessingInstruction, XComment

Добавляется как дочернее содержимое1

IEnumerable

Объект перечисляется и обрабатывается рекурсивно. Коллекция строк добавляется в виде единого текста

null

Этот объект игнорируется

Любой прочий тип

Вызывается метод ToString(), и результат трактуется как string

Ниже приведены различные варианты вызова конструктора XElement:

var e1 = new XElement("name", "Earth");

// Earth

var e2 = new XElement("planet", e1);

//

// Earth

//

var e3 = new XElement("period", new XAttribute("units", "days"));



//

var e4 = new XElement("comment", new XComment("the comment"));

//

//


//
var e5 = new XElement("list", new List {"text",

new XElement("name", "Mars")});

//

// textMars

//
var e6 = new XElement("moon", null);

//


var e7 = new XElement("date", DateTime.Now);

// 2010-01-19T11:04:54.625+02:00

Первая версия конструктора XElement является копирующим конструктором, а вторая – создаёт пустой элемент. Пятая версия конструктора подобна четвёртой, но позволяет предоставить множество объектов для содержимого:

var p = new XElement("planets",

new XElement("planet", new XElement("name", "Mercury")),

new XElement("planet", new XElement("name", "Venus")),

new XElement("planet", new XElement("name", "Earth"),

new XElement("moon",

new XElement("name", "Moon"),

new XElement("period", 27.321582,

new XAttribute("units", "days")))));

Console.WriteLine(p); // первые три планеты в виде XML

Использование конструктора XAttribute для создания XML-атрибута очевидно из приведённых выше примеров. Конструкторы класса XDocument позволяют указать декларацию XML-документа и набор объектов содержимого. В этот набор могут входить комментарии, инструкции по обработке и не более одного XML-элемента:

var d = new XDeclaration("1.0", "utf-8", "yes");

// используем элемент p из предыдущего примера

var doc = new XDocument(d, new XComment("первые три планеты"), p);

Console.WriteLine(doc.Declaration); // печатаем декларацию

Console.WriteLine(doc); // печатаем документ

Кроме применения конструкторов, объекты XML можно создать из строкового представления при помощи статических методов XElement.Parse() и XDocument.Parse():

var planet = XElement.Parse("Earth");

Для сохранения элемента или XML-документа используется метод Save(), имеющийся у XElement и XDocument. Данный метод перегружен и позволяет выполнить запись в текстовый файл или с применением адаптеров TextWriter и XmlWriter. Кроме этого, можно указать опции сохранения (например, отключить автоматическое формирование отступов элементов).

doc.Save("planets.xml", SaveOptions.None);

Загрузка элемента или XML-документа выполняется статическими методами XElement.Load() или XDocument.Load(). Метод Load() перегружен и позволяет выполнить загрузку из файла, произвольного URI, а также с применением адаптеров TextReader и XmlReader. Можно задать опции загрузки (например, связать с элементами XML номер строки в исходном тексте).

var d1 = XDocument.Load("planets.xml", LoadOptions.SetLineInfo);

var d2 = XElement.Load("http://habrahabr.ru/rss/main");


Каталог: images
images -> В списке студентов (или магистрантов)
images -> Н. И. Сулейманов Комплект контрольно-оценочных средств для оценки результатов освоения профессионального модуля разработан на основе Федерального государственного образовательного стандарта среднего профессионального
images -> По направлению подготовки
images -> Добавить гаджеты. Добавление гаджетов
images -> Техническое задание № apnip/C. 2/CS/Ind/01 Международный консультант по улучшенной производительности орошаемого земледелия
images -> Комплект контрольно-оценочных средств по профессиональному модулю пм. 01 Техническое обслуживание и ремонт автотранспорта


Поделитесь с Вашими друзьями:
1   ...   10   11   12   13   14   15   16   17   ...   29




База данных защищена авторским правом ©vossta.ru 2022
обратиться к администрации

    Главная страница