Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5fan_ru_ПАРАДИГМИ ПРОГРАМУВАННЯ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.32 Mб
Скачать

10.3. Обробка атрибутів

Зазвичай атрибути не розглядаються як частина структури документа. Але, при необхідності, можна визначити їх наявність і витягувати значення. Для витягання і запису атрибутів можна (як для елементів) використовувати класи XmlReader, XmlWriter, а також XmlDocument.

10.3.1. Витягання атрибутів за допомогою XmlReader

У таблиці перелічені деякі властивості і методи для обробки атрибутів.

HasAttributes

властивість. Повертає значення true, якщо елемент має атрибути і false – якщо немає

AttributeCount

властивість. Повідомляє скільки атрибутів має елемент

GetAttribute()

метод. Витягує атрибут по імені або по індексу

MoveToFirstAttribute()

метод. Дозволяє перейти до першого атрибуту

MoveToNextAttribute()

метод. Дозволяє перейти до наступного атрибуту

Для демонстрації цих можливостей додамо в XML-файл booknew.xml у елемент book атрибути:

<?xml version="1.0" encoding="utf-8"?>

<Catalog>

<book genre="Программная інженерія" yearpublic="2006" >

<title>Основы інженерії якості програмних систем</title>

<author>

<name>Коротун Т.М.</name>

<name>Коваль Г.І.</name>

</author>

<price>120.00</price>

</book>

</Catalog>

Відкриємо попередній проект WINDOWS-XML.

Додамо на форму ще одну кнопку для витягання атрибутів з елементу book. У обробник кнопки вставимо код:

private void btnAttr_Click(object sender, EventArgs e)

{

//витягання атрибутів з елементу

richTextBox1.Clear();

XmlReader rdr = XmlReader.Create("booknew.xml");

//читання вузлів

while (rdr.Read())

{

//перевірити, чи не є він вузлом

if (rdr.NodeType == XmlNodeType.Element)

{

//Якщо це елемент, перевірить його атрибути

for (int i = 0; i < rdr.AttributeCount; i++)

{

richTextBox1.AppendText(rdr.GetAttribute(i) + "\r\n");

}

}

}

rdr.Close();

}

10.3.2. Вставка атрибутів в документ за допомогою XmlWriter

Додамо на форму кнопку WriteAttributes. Обробник кнопки створює новий файл booknew.xml, у якому розміщується документ Catalog, що складається з одного вкладеного елементу book. У елементі book є два атрибути "genre" і "yearpublic". Метод WriteAttributeString() додає атрибут до елементу.

private void btmWriteAtt_Click(object sender, EventArgs e)

{

// запис у файл з атрибутами

XmlWriterSettings setting = new XmlWriterSettings();

setting.Indent = true;

string fname = "booknew.xml";

XmlTextWriter writer = new XmlTextWriter(fname, null);

writer.Formatting = Formatting.Indented;

writer.WriteStartDocument();

//початок створення єлементов

writer.WriteStartElement("Catalog");

writer.WriteStartElement("book");

writer.WriteAttributeString("genre", "Програмна інженерія");

writer.WriteAttributeString("yearpublic", "2006");

writer.WriteElementString("title", "Основи інженерії якості програмних систем");

writer.WriteStartElement("author");

writer.WriteElementString("name", "Коротун Т.М.");

writer.WriteElementString("name", "Коваль Г.І.");

writer.WriteEndElement();

writer.WriteElementString("price", "120.00");

writer.WriteEndElement();

writer.WriteEndElement();

writer.WriteEndDocument();

//Очищення потоку

writer.Flush();

writer.Close();

}

В результаті буде створений файл booknew.xml, що містить опис книги.

Інший спосіб додавання і витягання атрибутів – викорстання моделі DOM (клас XmlDocument).

Висновки

Класи C# забезпечують різні способи обробки Xml-документів. Окрім розглянутих в лекції, в .NetFramework є класи для створення схем документів, перевірки документів на відповідність схемі, пошук інформації по вмісту(XPath і XslTransform), обробку запитів, взаємодію з базою даних.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]