C# для профессионалов. Том II

на главную - закладки

Жанры

Поделиться:

C# для профессионалов. Том II

Шрифт:

Глава 13

XML

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

System.Xml
. Это пространство имен загружается вместе с классами, задействованными при обработке XML.

В этой главе говорится о том, как использовать реализацию DOM, и что предлагает .NET в качестве замены SAX. Будет показана совместная работа XML и ADO.NET и их преобразования. Мы узнаем так же, как можно сериализовать объекты в документ XML и создать объект из документа XML (десериализовать). Кроме того увидим, как включать XML в приложения C#. Следующие классы будут рассмотрены более

подробно:

XmlReader
и
XmlTextReader

XmlWriter
и
XmlTextWriter

XmlDocument
и DOM

XPath
и
XslTransform

ADO.NET
и
XmlDataDocument

XmlSerialization

Начнем эту главу с текущего состояния стандартов XML.

Стандарты W3C

Консорциум WWW (W3C) разработал множество стандартов, придающих XML мощь и потенциал. Без этих стандартов XML не смог бы оказать такого большого влияния на мир разработки. В этой книге не будут подробно рассматриваться тонкости XML. Для этого необходимо использовать другие источники. Среди книг Wrox, переведенных издательством "Лори", можно порекомендовать "Введение в XML" (2001 г., 656 стр.), "XML для профессионалов" (2001 г., 896 стр.) и "The XML Handbook" (ISBN 0-13-055068). Конечно, web-сайт W3C является ценным источником информации о XML (www.w3.org). В мае 2001 г. платформа .NET поддерживала следующие стандарты:

□ XML 1.0 — www.w3.org/TR/1998/REC-XML-19980210 — включая поддержку DTD (

XmlTextReader
).

□ Пространства имен XML — www.w3.org/TR/REC-xml-names — уровень потока и DOM.

□ Схемы XML — www.w3.org/TR/xmlschema-1 — поддерживается отображение схем и сериализация, но пока еще не поддерживается проверка.

□ Выражения XPath — www.w3.org/TR/xpath

□ Преобразования XSL/T — www.w3.org/TR/xslt

□ Ядро DOM Level 2 — www.w3.org/TR/DOM-Level-2

□ Soap 1.1 — msdn.microsoft.com/xml/general/soapspec.asp

Уровень поддержки стандартов будет меняться по мере развития платформы и по мере того, как W3C продолжает обновлять рекомендованные стандарты. В связи с этим необходимо всегда оставаться на современном уровне стандартов и уровне поддержки, который обеспечивает Microsoft.

Пространство имен System.Xml

Рассмотрим (без определенного порядка) некоторые классы пространства имен System.Xml.

Имя класса Описание
XmlReader
Абстрактный. Средство чтения, которое предоставляет быстрый, некэшированный доступ к данным XML.
XmlReader
читает только вперед, аналогично синтаксическому анализатору SAX.
XmlWriter
Абстрактный. Средство записи, которое предоставляет быструю, некэшированную запись данных XML в поток или файл.
XmlTextReader
Реализует
XmlReader
. Предоставляет быстрый потоковый доступ для чтения с режимом только вперед к данным XML. Разрешает (допускает) использование данных в одном представлении.
XmlTextWriter
Реализует
XmlWriter
. Быстрая генерация потоков записи XML с режимом только вперед.
XmlNode
Абстрактный. Класс, который представляет единичный узел в документе XML. Базовый класс для нескольких классов в пространстве имен XML.
XmlDocument
Реализует
XmlNode
. Объектная модель документов W3C (DOM, Document Object Model). Задает в памяти представление документа XML в виде дерева, разрешая перемещение и редактирование.
XmlDataDocument
Реализует
XmlDocument
.
То есть документ, который можно загрузить из данных XML или из реляционных данных объекта
DataSet
из ADO.NET.
XmlResolver
Абстрактный. Разрешает внешние ресурсы на основе XML, такие как DTD и схемные ссылки. Используется также для обработки элементов
<xsl:include>
и
<xsl:import>
.
XmlUrlResolver
Реализует
XmlResolver
. Разрешает внешние ресурсы с помощью URI (унифицированный идентификатор ресурса).

XML является также частью пространства имен

System.Data
в классе
DataSet
.

Имя класса Описание
ReadXml
Считывает данные XML и схему в
DataSet
.
ReadXmlSchema
Считывает схему XML в
DataSet
.
WriteXml
Переписывает XML и схему из
DataSet
в документ XML.
WriteXmlSchema
Переписывает схему из
DataSet
в документ XML.

Необходимо отметить, что эта книга посвящена языку C#, поэтому все примеры будут написаны на C#. Однако пространство имен XML доступно в любом языке, который является частью семейства .NET. Это означает, что все приведенные примеры могли быть также написаны на языках VB.NET, Управляемый C++ и т.д.

XML 3.0 (MSXML3.DLL) в C#

Как быть, если имеется большой объем кода, разработанного с помощью синтаксического анализатора компании Microsoft (в настоящее время XML 3.0)? Придется ли его выбросить и начать все сначала? А что если вам удобно использовать объектную модель XML 3.0 DOM? Нужно ли немедленно переключаться на .NET?

Ответом будет — нет. XML 3.0 может использоваться непосредственно в приложениях. Если добавить ссылку на msxml3.DLL в свое решение, то можно будет начать писать некоторый код.

Следующие несколько примеров будут использовать файл books.xml в качестве источника данных. Его можно загрузить с web-сайта издательства Wrox, он также включен в несколько примеров .NET SDK. Файл books.xml является каталогом книг воображаемого книжного склада. Он содержит такую информацию, как жанр, имя автора, цена и номер ISBN. Все примеры кода в этой главе также доступны на web-сайте издательства Wrox: www.wrox.com. Чтобы выполнить эти примеры, файлы данных XML должны находиться в структуре путей, которая выглядит примерно следующим образом:

/XMLChapter/Sample1

/XMLChapter/Sample2

/XMLChapter/Sample3

и т. д. Файлы XML должны находиться в подкаталоге XMLChapter, а код для примеров должен быть в подкаталогах Sample1, Sample2 и т.д. Можно называть каталоги как угодно, но их относительное положение важно. Можно также изменять примеры, чтобы указать желаемое направление. В коде примеров будут сделаны указания, какие строки изменить.

Файл books.xml выглядит следующим образом:

<?xml version='1.0'?>

<!-- Этот файл представляет фрагмент базы данных учета запасов книжного склада -->

<bookstore>

 <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">

<title>The Autobiography of Benjamin Franklin</title>

<author>

<first-name>Benjamin</first-name>

<last-name>Franklin</last-name>

Комментарии:
Популярные книги

Барон Дубов 2

Карелин Сергей Витальевич
2. Его Дубейшество
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Барон Дубов 2

На границе империй. Том 7. Часть 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
На границе империй. Том 7. Часть 4

Потомок бога 3

Решетов Евгений Валерьевич
3. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Потомок бога 3

Война

Валериев Игорь
7. Ермак
Фантастика:
боевая фантастика
альтернативная история
5.25
рейтинг книги
Война

Покоривший СТЕНУ 6: Пламя внутри

Мантикор Артемис
6. Покоривший СТЕНУ
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Покоривший СТЕНУ 6: Пламя внутри

Наташа, не реви! Мы всё починим

Рам Янка
7. Самбисты
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Наташа, не реви! Мы всё починим

Идеальный мир для Лекаря 17

Сапфир Олег
17. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 17

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Последний Паладин. Том 7

Саваровский Роман
7. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 7

Вечный. Книга I

Рокотов Алексей
1. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга I

Завод 2: назад в СССР

Гуров Валерий Александрович
2. Завод
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Завод 2: назад в СССР

Солнечный корт

Сакавич Нора
4. Все ради игры
Фантастика:
зарубежная фантастика
5.00
рейтинг книги
Солнечный корт

Пермский Губернский 2. Корпорат

Бергер Евгений
2. Провинциальный Бог Войны
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Пермский Губернский 2. Корпорат

Печать Пожирателя

Соломенный Илья
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Печать Пожирателя