// Помещаем XML-данные в элемент TextBox
richTextBox1.Text = xmlDoc.OuterXml;
this.Controls.Add(richTextBox1);
// Создаем объект ComboBox
// В элементы списка этого объекта записываем
//различные выражения XPath,
//позволяющие искать нужные
элементы XML-документа
comboBox1 = new ComboBox();
comboBox1.Location = new Point(0, 200);
comboBox1.Width = 300;
comboBox1.Items.Add(“/Планета”);
comboBox1.Items.Add(“/Планета/Континент”);
comboBox1.Items.Add(“/Планета/Континент/Страна”);
comboBox1.Items.Add(
“/Планета/Континент/Страна[@столица=’Рио-де-Жанейро’]”);
comboBox1.SelectedIndex = 0;
this.Controls.Add(comboBox1);
// Создаем командную кнопку для поиска и отображения
// соответствующих элементов Xml-документа
button1 = new Button();
button1.Text = “Получить данные”;
button1.Location = new Point(100, 230);
button1.Width = 120;
button1.Click += new EventHandler(Button1_Click);
this.Controls.Add(button1);
// Создаем элемент ListBox для отображения элементов
listBox1 = new ListBox();
listBox1.Dock = DockStyle.Bottom;
listBox1.Location = new Point(10, 10);
this.Controls.Add(listBox1);
}
static void Main()
{
// Создаем и запускаем новый экземпляр класса
Application.Run(new XmlRetriever());
}
//
Обработчик события, срабатывающий при нажатии кнопки
void Button1_Click(object sender, EventArgs e)
{
115
Базы данных и XML
XmlNodeList xmlNodes;
XmlNode xmlElement;
string elementValue;
// Используем
охраняемый блок try-catch,
// что позволит в случае ошибок в выражениях XPath
// перехватывать обработку исключений, выдавать сообщение
// об ошибке и нормально продолжить работу приложения
try
{
// Выбираем из
XML-документа элементы, которые соответствуют
// выражению XPath, заданному выбранным элементом ComboBox
xmlNodes = xmlDoc.SelectNodes(comboBox1.Text);
// Производим циклический перебор найденных элементов,
// добавляя
каждый элемент в ListBox
listBox1.Items.Clear();
for (int i = 0; i < xmlNodes.Count; i++)
{
xmlElement = xmlNodes[i];
if (xmlElement.HasChildNodes)
{
elementValue = xmlElement.FirstChild.Value.Trim();
listBox1.Items.Add(elementValue);
}
}
}
catch (XPathException ex)
{
const string errorMessage =
“Ошибка в задании выражения XPath!” +
“\r\n” + “Соответствующие данные в документе не найдены!” +
“\r\n” + “Попробуйте задать другое выражение!”;
MessageBox.Show(errorMessage +”\r\n” + ex.Message);
}
}
}
Программа отображает исходный XML-файл в элементе управления
RichTextBox
. Далее из
списка элементов
ComboBox
можно выбрать одно из выражений
xPath
и
нажать на командную
кнопку. В результате в элемент управления
ListBox
будут выведены элементы Xml-документа,
заданные выражением
XPath
. Вы можете задать собственное выражение
XPath
в
элементе
ComboBox
. После запуска программы поэкспериментируйте с вводом и выбором выражения
xPath
, после чего нажмите кнопку «Получить данные».
116
Do'stlaringiz bilan baham: