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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Витягання атрибутів за допомогою 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();

 

}

Вставка атрибутів в документ за допомогою 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), обробку запитів, взаємодію з базою даних.

 


Лекція 11. Елементи функціонального програмування в C#

 

План

1. Елементи функціонального програмування в C#

2. Делегати

3. Лямбда-вирази і лямбда-функції

 

11.1. Елементи функціонального програмування в C#

Навіть з назви «Функціональне програмування» ясно, що основний наголос в ньому робиться на функції (у математичному сенсі), тобто, y=f(x). Функціональне обчислення – функція (або якщо бути точніше – «чиста функція», pure function) – повинна приймати деякі аргументи (вхідні дані) на вході, виконувати обчислення і повертати деякий результат. При цьому функція не повинна створювати жодних побічних ефектів. Під побічними ефектами розуміється можливість функції:

1. Змінювати глобальні (статичні в термінах C#) змінні.

2. Викликати інші функції, які можуть створити побічний ефект.

3. Займатися будь-яким введенням/виведенням усередині функції.

4. Посилати або приймати деякі повідомлення.

По суті, пункти 2-4 є різновидами одного і того ж – зміна стану за допомогою виклику.

Таким чином, функція не має права робити нічого, що могло б змінити стан чого б то не було (наприклад, змінних в пам'яті). Все, що може робити функція – це виконувати обчислення і видавати результат.

Програмування у функціональному стилі дозволяє зробити код коротше і безпечніше.

C# не є повністю мовою функціонального програмування, але містить елементи, що дозволяють писати програми у функціональному стилі.

До основних елементів функціонального програмування, підтримуваних в C#, можна віднести: делегати, лямбда-вирази і дерева виразів, а також нова інтегрована мова запитів Language Integrated Query (LINQ).

 

Делегати

Делегати в C# є аналогом посилання на функцію в C++. Сама по собі функція (метод) або її ім'я не є чимось, чим можна було б маніпулювати, але якщо помістити її делегат, з'явиться можливість посилатися на неї, а значить передавати в інші функції і повертати функції з інших функцій. Таким чином, можна сказати, що делегати є аналогами функціональних типів в мовах функціонального програмування.



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 212; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.213.75.78 (0.009 с.)