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

Шрифт
Интервал

>/XMLChapter/Sample1

>/XMLChapter/Sample2

>/XMLChapter/Sample3

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

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

>

>

>

>  The Autobiography of Benjamin Franklin

>   Benjamin

>   Franklin

>  

>  8.99

>  The Confidence Man

>  

>   Herman

>   Melville

>  

11.99

 

The Gorgias

>  

>   Plato

>  

9.99

>

Рассмотрим пример кода, использующего MSXML 3.0 для загрузки окна списка с номерами ISBN из >books.xml. Ниже записан код, который можно найти в папке >SampleBase1 архива, загружаемого с web-сайта издательства Wrox. Можно скопировать его в Visual Studio IDE или создать новую форму Windows Form с самого начала. Эта форма содержит элементы управления >listbox и >button. Оба элемента используют имена по умолчанию >listBox1 и >button1:

>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) {


Рекомендуем почитать
Графика для Windows средствами DirectDraw

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


Виртуальная библиотека Delphi

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


Пишем драйвер Windows на ассемблере

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


Как писать драйвера

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


MFC и OpenGL

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


Информационная технология. Оценка программной продукции характеристики качества и руководства по их применению

Стандарт подготовлен на основе применения аутентичного текста международного стандарта ИСО/МЭК 9126-91 «Информационная технология. Оценка программной продукции. Характеристики качества и руководства по их применению»Information technology. Software product evaluation. Quality characteristics and guidelines for their use.