Симон Робинсон - C# для профессионалов. Том II
- Название:C# для профессионалов. Том II
- Автор:
- Жанр:
- Издательство:Лори
- Год:2003
- Город:Москва
- ISBN:5-85582-187-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Симон Робинсон - C# для профессионалов. Том II краткое содержание
Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Для кого предназначена эта книгаЭта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
Основные темы книги• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory
C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
tw.WriteStartElement("author");
tw.WriteElementString("name", "Cookie Monster");
tw.WriteEndElement();
tw.WriteElementString("price", "9.99");
tw.WriteEndElement();
tw.WriteEndDocument();
// очистить
tw.Flush();
tw.Close();
}
Создадим новый файл booknew.xmlи добавим новую книгу. Объект XmlTextWriterзаменит существующий файл. Вставку нового элемента или узла в существующий документ рассмотрим позже. Экземпляр объекта XmlTextWriterсоздается с помощью объекта FileStreamв качестве параметра. Можно также передать строку с именем файла и путем доступа или объект на основе TextWriter. При задании свойства Indentingузлы-потомки будут автоматически делать отступ от предка. Метод WriteStartDocument()помещает объявление документа. Начинаем запись данных. Сначала идет элемент book. Затем добавляем атрибуты genre, publicationdateи ISBN. После чего записываем элементы title, author, и price. Отметим, что элемент authorимеет элемент-потомок name.
После нажатия на кнопку будет создан следующий файл booknew.xml:
Cookie Monster
9,99
Так же как в документе XML, здесь имеются начальный метод и конечный метод ( WriteStartElementи WriteEndElement). Вложенность контролируется отслеживанием начала и окончания записи элементов и атрибутов. Это можно видеть при добавлении элемента потомка nameк элементу authors. Отметим, как организуются вызовы методов WriteStartElementи WriteEndElementи как это связывается с выведенным документом XML.
В дополнение к WriteElementStringи WriteAtributeStringимеется несколько других специализированных методов записи. Метод WriteCDateбудет выводить раздел CDate (), взяв текст для записи из параметра. WriteComment записывает комментарий в подходящем формате XML. WriteChars записывает содержимое символьного буфера. Это работает аналогично методу ReadChars, который был рассмотрен ранее. Оба они используют один и тот же тип параметров. Методу WriteCharнужен буфер (массив символов), начальная позиция для записи (целое значение) и число символов для записи (целое значение).
Чтение и запись XML с помощью классов, основанных на XMLReaderи XMLWriter, осуществляются очень просто. Далее мы рассмотрим реализацию DOM пространства имен System.Xml. Это классы на основе XmlDocumentи XmlNode.
Объектная модель документа в .NET
Реализация объектной модели документа (DOM, Document Object Model) в .NET поддерживает спецификации W3C DOM Level 1 и Core DOM Level 2. DOM реализуется с помощью класса XmlNode. XmlNodeявляется абстрактным классом, который представляет узел документа XML. XmlNodeListявляется упорядоченным списком узлов. Это живой список узлов, и любые изменения в любом узле немедленно отражаются в списке. XmlNodeListподдерживает индексный доступ или итеративный доступ. Эти два класса составляют основу реализации DOM на платформе .NET. Вот список классов, которые основываются на XmlNode.
| Имя класса | Описание |
|---|---|
XmlLinkedNode |
Расширяет XmlNode. Возвращает узел непосредственно перед или после текущего узла. Добавляет свойства NextSiblingи PreviousSiblingв XmlNode. |
XmlDocument |
Расширяет XmlNode. Представляет весь документ. Реализует спецификации DOM Level 1 и Level 2. |
XmlAttribute |
Расширяет XmlNode. Объект атрибута объекта XmlElement. |
XmlCDataSection |
Расширяет XmlCharacterData. Объект, который представляет раздел документа CData. |
XmlCharacterData |
Абстрактный класс, который предоставляет методы манипуляции с текстом для других классов. Расширяет XmlLinkedNode. |
XmlComment |
Расширяет XmlCharacterData. Представляет объект комментария XML. |
XmlDeclaration |
Расширяет XmlLinkedNode. Представляет узел объявления ( ) |
XmlDocumentFragment |
Расширяет XmlNode. Представляет фрагмент дерева документа. |
XmlDocumentType |
Расширяет XmlLinkedNode. Данные, связанные с объявлением типа документа. |
XmlElement |
Расширяет XmlLinkedNode. Объект элемента XML. |
XmlEntity |
Расширяет XmlNode. Синтаксически разобранный или неразобранный узел сущности. |
XmlEntityReferenceNode |
Расширяет XmlLinkedNode. Представляет ссылочный узел сущности |
XmlNotation |
Расширяет XmlNode. Содержит нотацию, объявленную в DTD или в схеме. |
XmlProcessingInstruction |
Расширяет XmlLinkedNode. Содержит инструкцию обработки XML. |
XmlSignificantWhitespace |
Расширяет XmlCharacterData. Представляет узел с разделителем. Узлы создаются, только если флаг PreserveWhiteSpaceзадан как true. |
XmlWhitespace |
Расширяет XmlCharacterData. Представляет разделитель в содержимом элемента. Узлы создаются, только если флаг PreserveWhiteSpaceзадан как true. |
XmlText |
Расширяет XmlCharacterData. Текстовое содержимое элемента или атрибута. |
Как можно видеть .NET делает доступным класс, соответствующий почти любому типу XML. Мы не будем рассматривать каждый класс подробно, но разберем несколько примеров. Вот как выглядит диаграмма наследования:
Первый пример будет создавать объект XmlDocument, загружать документ с диска и загружать окно списка с данными из элементов title. Это аналогично одному из примеров, которые были выполнены в разделе XmlReader. Отличие заключается в том, что осуществляется выбор, с какими узлами мы хотим работать, вместо того чтобы использовать весь документ. Вот код для выполнения этого в среде XmlNode. Посмотрите, как просто он выглядит при сравнении (файл можно найти в папке DOMSample1загруженного архива):
private void button1_Click(object sender. System.EventArgs e) {
// doc объявлен на уровне модуля
// изменить путь доступа в соответствии со структурой путей доступа
doc.Load("..\\..\\..\\books.xml")
// получить только те узлы, которые нужны
XmlNodeList nodeLst=doc.GetElementsByTagName("title");
// итерации по списку XmlNodeList
foreach(XmlNode node in nodeLst) listBox1.Items.Add(node, InnerText);
}
Обратите внимание, что мы добавили следующее объявление на уровне модуля:
private XmlDocument doc=new XmlDocument();
Если бы это было все, что нужно делать, то использование XmlReaderбыло бы значительно более эффективным способом загрузки окна списка. Причина в том, что мы прошли через документ один раз и затем закончили с ним работу. Однако, если желательно повторно посетить узел, то использование XmlDocumentявляется лучшим для этого способом. Слегка расширим пример (новая версия находится в DOMSample2):
Интервал:
Закладка: