Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
XML-Лекция 5. Создание XML-документов в C#.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
128 Кб
Скачать
☆

3. Обработка атрибутов

Обычно атрибуты не рассматриваются как часть структуры документа. Но, при необходимости, можно определить их наличие и извлечь значения. Для извлечения и записи атрибутов можно (как для элементов) использовать классы XmlReader, XmlWriter, а также XmlDocument.

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();

}

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

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