Симон Робинсон - 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 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
}
Здесь сначала создается XPathDocument
, передавая строку файла и пути доступа документа, который будет открыт. В следующей строке кода создается XPathNavigator
:
XPathNavigator nav=((IXPathNavigable)doc).CreateNavigator();
Отметим, что здесь происходит преобразование типа интерфейса IXPathNavigable
в только что созданный XPathNavigator
, что вызывает метод CreateNavigator
. После создания объекта XPathNavigator
можно начать навигацию в документе.
Этот пример показывает, как применяются методы Select
для получения множества узлов, которые имеют novel
в качестве значения атрибута genre
. Затем мы используем цикл MoveNext()
для итераций по всем novels
в списке книг.
Для загрузки данных в listbox
используется свойство XPathNodeIterator.Current
. При этом создается новый объект XPathNavigator
на основе узла, на который указывает XPathNodeIterator
. В данном случае создается XPathNavigator
для одного узла book
(книги) в документе. LoadBook
создает другой XPathNodeIterator
, вызывая иной тип метода выбора — метод SelectDescendants
. Это даст нам XPathNodeIterator
всех узлов-потомков и потомков узлов-потомков узла book
(книга), переданного в метод LoadBook
. Мы делаем другой цикл MoveNext()
на этом XPathNodeIterator
и загружаем окно списка именами и значениями элементов.
XPathNavigator
содержит все методы для перемещения и выбора элементов, которые могут понадобиться. Приведем некоторые из методов перемещения:
Имя метода | Описание |
---|---|
MoveTo | Получает в качестве параметра XPathNavigator . Делает текущей позицию, которая указана в XPathNavigator . |
MoveToAttribute |
Перемещает к именованному атрибуту. Получает имя атрибута и пространство имен как параметры. |
MoveToFirstAttribute |
Перемещает к первому атрибуту текущего элемента. Возвращает true , если выполняется успешно. |
MoveToNextAttribute |
Перемещает к следующему атрибуту текущего элемента. Возвращает true , если выполняется успешно. |
MoveToFirst |
Перемещает к первому sibling текущего узла. Возвращает true , если выполняется успешно, в противном случае возвращает false . |
MoveToLast |
Перемещает к последнему sibling текущего узла. Возвращает true , если выполняется успешно. |
MoveToNext |
Перемещает к следующему sibling текущего узла. Возвращает true , если выполняется успешно. |
MoveToPrevious |
Перемещает к предыдущему sibling текущего узла. Возвращает true , если выполняется успешно. |
MoveToFirstChild |
Перемещает к первому потомку текущего элемента. Возвращает true , если выполняется успешно. |
MoveToId |
Перемещает к элементу с идентификатором ID, предоставленным в виде параметра. Должна существовать схема документа и данные элемента типа ID. |
MoveToParent |
Перемещает к предку текущего узла. Возвращает true , если выполняется успешно. |
MoveToRoot |
Перемещает к корневому узлу документа. |
Существует также несколько методов Select
выбора подмножества узлов для работы. Все методы Select
возвращают объект XPathNodeIterator
. XPathNodeIterator
можно считать эквивалентом NodeList
или NodeSet
в XPath
. Этот объект имеет три свойства и два метода:
□ Clone
— создает новую копию себя
□ Count
— число узлов в объекте XPathNodeIterator
□ Current
— возвращает XPathNavigator
, указывающий на текущий узел
□ CurrentPosition
— возвращает целое число, соответствующее текущей позиции
□ MoveNext
— перемещает в следующий узел, соответствующий выражению Xpath
, которое создало XPathNodeIterator
Можно использовать также существующие методы SelectAncestors
и SelectChildren
. Они возвращают XPathNodelterator
. В то время, как Select
получает выражение XPath
в качестве параметра, другие методы выбора получают в качестве параметра XPathNodeType
. В рассматриваемом примере мы выбираем все узлы XPathNodeType.Element
.
Вот как выглядит экран после выполнения кода. Обратите внимание, что все перечисленные книги являются романами (novel).

Для добавления стоимости книг XPathNavigator
содержит метод Evaluate
. Evaluate
имеет три перегружаемые версии. Первая из них содержит строку, которая является вызовом функции XPath
. Вторая перегружаемая версия Evaluate использует в качестве параметра объект XPathExpression
, третья — XPathExpression
и XPathNodeIterator
. Сделаем следующие изменения в примере (эту версию кода можно найти в XPathXSLSample2
):
private void button1_Click(object sender, System.EventArgs e) {
//изменить в соответствии со структурой путей доступа
XPathDocument doc=new XPathDocument("..\\..\\..\\booksxpath.XML");
//создать XPathNavigator
XPathNavigator nav=((IXPathNavigable)doc).CreateNavigator();
//создать XPathNodeIterator узлов book,
// которые имеют novel значением атрибута genre
XPathNodeIterator iter=nav.Select("/bookstore/book[@genre="novel']");
while(iter.MoveNext()) {
LoadBook(iter.Current.Clone());
}
// добавим разделительную линию и вычислим сумму
listBox1.Items.Add("========================");
listBox1.Items.Add("Total Cost = "
+ nav.Evaluate("sum(/bookstore/book[@genre='novel']/price)"));
}
При этом вывод изменится следующим образом:

Пространство имен System.Xml.Xsl
содержит классы XSL, применяемые .NET. XslTransform
может использоваться с любым хранилищем, которое реализует интерфейс IXPathNavigable
. В настоящее время на платформе .NET это: XmlDocument
, XmlDataDocument
и XPathDocument
. Так же как и в случае XPath, воспользуйтесь тем хранилищем, которое подходит лучшим образом. Если планируется создание заказного хранилища, такого как файловая система, и желательно иметь возможность выполнять преобразования, не забудьте реализовать в классе интерфейс IXPathNavigable
.
XslTransform
основывается на потоковой модели запросов. В связи с этим можно соединить несколько преобразования вместе. Можно даже применять, если нужно, между преобразованиями заказной объект чтения. Это предоставляет большую гибкость при проектировании.
В первом примере, который мы рассмотрим, берется документ books.xml
и преобразуется в простой документ HTML для вывода. (Этот код можно найти в папке XPathXSLSample3
.) Необходимо будет добавить следующие операторы using
:
using System.IO;
using System.Xml.Xsl;
using System.Xml.XPath;
Вот код, выполняющий преобразование:
private void button1_Click(object sender System.EventArgs e) {
Интервал:
Закладка: