Симон Робинсон - 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 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
namespace SampleBase {
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
Затем включается пространство имен для ссылки на msxml3.dll
. Помните, что ссылку на эту библиотеку необходимо включать в проект (ее можно найти на вкладке COM диалогового окна Add Reference).
using MSXML2;
///
/// Краткое описание Form1.
///
public class Form1 : System.Windows.Forms.Form {
private System.Windows.Forms.ListBox listBox1;
private System.Windows.Forms.Button button1;
///
/// Необходимая для Designer переменная.
///
private System.ComponentModel.Container components;
Затем объявляется документ DOM на уровне модуля:
private DOMDocument30 doc;
public Form1() {
//
// Требуется для поддержки Windows Form Designer
//
InitializeComponent();
//
// TODO: Добавьте любой код конструктора после вызова
// InitializeComponent
//
}
///
/// Очистить все использованные ресурсы.
///
public override void Disposed {
base.Dispose();
if (components != null) components.Dispose();
}
#region Windows Form Designer создает код
///
/// Необходимый для поддержки Designer метод — не изменяйте
/// содержимое этого метода редактором кода.
///
private void InitializeComponent() {
this.listBox1 = new System.Windows.Forms.ListBox();
this.button1 = new System.Windows.Forms.Button();
this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles.Top |
System.Windows.Forms.AnchorStyles.Left) |
System.Windows.Forms.AnchorStyles.Right);
this.listBox1.Size = new System.Drawing.Size(336, 238);
this.listBox1.TabIndex = 0;
this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);
this.button1.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
this.button1.Location = new System.Drawing.Point(136, 264);
this.button1.TabIndex = 1;
this.button1.Text = "button1";
this.button1.Click += new System.EventHandler(this.button1_Click);
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(339, 320);
this.Controls.AddRange(new System.Windows.Forms.Control[]{this.button1, this.listBox1});
this.Text = "Form1";
}
#endregion
///
/// Главная точка входа для приложения.
///
[STAThread]
static void Main() {
Application.Run(new Form1());
}
Мы хотим взять номер ISBN из listbox
и, используя простой поиск XPath
, найти узел книги, который ему соответствует, и вывести текст узла (заглавие книги и цену) в MessageBox
. Язык пути доступа XML (XPath) является нотацией XML, которая может использоваться для запроса и фильтрации текста в документе XML. Рассмотрим XPath в .NET позже в этой главе. Вот код обработчика событий для выбора записи в окне списка:
protected void listBox1_SelectedIndexChanged (object sender, System.EventArgs e){
string srch=listBox1.SelectedItem.ToString();
IXMLDOMNode nd=doc.selectSingleNode("bookstore/book[@ISBN='" + srch + "']");
MessageBox.Show(nd.text);
}
Теперь мы имеем обработчик события нажатия кнопки. Сначала мы загружаем файл books.xml
— обратите внимание, что если файл выполняется не в папке bin/debug
или bin/release
, необходимо исправить соответствующим образом путь доступа:
protected void button1_Click(object sender, System.EventArgs e) {
doc=new DOMDocument30();
doc.load("..\\..\\..\\books.xml")
Следующие строки объявляют, что узлы являются nodeList
узлов книг. В данном случае имеется три узла:
IXMLDOMNodeList nodes;
nodes = doc.selectNodes("bookstore/book");
IXMLDOMNode node=nodes.nextNode();
Мы просматриваем узлы в цикле и добавляем текстовое значение атрибута ISBN в listBox1
:
while(node!=null) {
listBox1.Items.Add(node.attributes.getNamedItem("ISBN").text);
node=nodes.nextNode();
}
}
}
}
Вот как выглядит пример во время выполнения:

Это изображение появляется после того, как была нажата кнопка button1 и загрузился listBox1 с номерами ISBN книг. После выбора номера ISBN будет выведено следующее:

System.Xml
Пространство имен System.Xml
является мощным и относительно простым для использования, но оно отличается от модели MSXML 3.0. Если вы знакомы с MSXML 3.0, то применяйте его, пока не освоитесь с пространством имен System.Xml
. Пространство имен System.Xml
предлагает большую гибкость и легче расширяется.
Этот файл XML будет использоваться в примерах этой главы. Код, который только что был рассмотрен, лежит в основе нескольких примеров. В большинстве других будет показан только код, имеющий отношение к делу, и не будет повторяться то, что уже было показано.
Чтение и запись XML
Теперь посмотрим, что позволяет делать платформа .NET. Если раньше вы работали с SAX, то XmlReader
и XmlWriter
вам будут знакомы. Классы на основе XmlReader
предоставляют быстрый курсор только для чтения вперед, который создает поток данных XML для обработки. Так как это потоковая модель, то требования к памяти не очень большие. Однако в ней отсутствует навигационная гибкость и средства чтения/записи, присущие модели DOM. Классы на основе XmlWriter
будут создавать документ XML, который соответствует рекомендациям по пространствам имен XML 1.0 консорциума W3C.
XmlReader
и XmlWriter
являются абстрактными классами. Рисунок ниже показывает, какие классы являются производными от XmlReader
и XmlWriter
:

XmlTextReader
и XmlTextWriter
работают либо с объектами на основе потока, либо с объектами на основе TextReader
или TextWriter
. XmlNodeReader
использует XmlNode
вместо потока в качестве своего источника. XmlValidatingReader
добавляет DTD и проверку схем и поэтому предлагает проверку данных. Мы рассмотрим это подробнее позже в этой главе.
XmlTextReader
XmlTextReader
похож на SAX. Одно из различий заключается в том, что SAX является моделью типа рассылки (push), т.е. посылает данные приложению и разработчик должен быть готов принять их, a XmlTextReader
применяет модель запроса (pull), где данные посылаются приложению, которое их запрашивает. Это предоставляет более простую и интуитивно понятную модель для программирования. Другое преимущество состоит в том, что модель запроса может быть избирательной в отношении данных, посылаемых приложению. Если нужны не все данные, то их не нужно обрабатывать. В модели рассылки все данные XML должны быть обработаны приложением, нужны они ему или нет.
Возьмем простой пример считывания данных XML, и затем более внимательно рассмотрим класс XmlTextReader
. Код можно найти в папке XmlReaderSample1
. Можно заменить метод button1_Click
в предыдущем примере на следующий код. Эту версию данного кода можно найти в папке SampleBase2
загруженного архива кода. Не забудьте изменить:
Интервал:
Закладка: