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

14

Лекция 5. Создание xml-документов в .Net

План

1. Использование класса XmlWriter - запись потоков данных Xml

2. Использование DOM в .Net

2.1. Чтение XML-документа с помощью XmlNodeList

2.2. Вставка элементов (узлов) в XML- документ

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

3.1. Извлечение атрибутов с помощью XmlReader

3.2. Вставка атрибутов в документ с помощью XmlWriter

1. Использование класса XmlWriter - запись потоков данных Xml

Таблица 1. Основные классы чтения и записи данных XML

XmlReader

Абстрактный класс, выполняющий чтение и обеспечивающий быструю доставку некешированных данных XML. Класс представляет собой однонаправленный синтаксический анализатор

XmlWriter

Абстрактный класс, выполняющий запись данных в виде потока или файла

XmlTextReader

Реализация класса XmlReader. Обеспечивает однонаправленный потоковый доступ к данным XML

XmlTextWtiter

Реализация класса XmlWriter. Обеспечивает быструю однонаправленную генерацию потоков XML

Для работы с данными каждый из классов предоставляет необходимые методы.

Класс XmlWriter позволяет записывать Xml-код в поток данных, файл, в класс StringBuilder, TextWriter и другие объекты XmlWriter.

Класс легко конфигурируется, что позволяет определить потребность во вспомогательных установках, таких как отступы, кавычки, пространства имен и другое. Такое конфигурирование выполняется с использованием объекта XmlWriterSettings.

Создадим обработчик кнопки WriteXml примера предыдущей лекции.

При нажатии кнопки WriteXml выполняется создание элементов XML-документа и запись его в новый файл "booknew.xml");

private void btmWriteXml_Click(object sender, EventArgs e)

{

// запись в файл

XmlWriterSettings setting = new XmlWriterSettings();

setting.Indent = true;

XmlWriter writer = XmlWriter.Create("booknew.xml", setting);

writer.WriteStartDocument();

//начало создания єлементов

writer.WriteStartElement("Catalog");

writer.WriteStartElement("book");

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

}

В этом примере создается новый XML-файл booknew.xml, в который записываются данные о новой книге. Класс XmlWriter перезаписывает существующее содержимое файла новым содержимым. Для вставки новых элементов используются методы класса XmlWriter. Для создания объекта XmlWriter используется статический метод Create(). В примере строка, представляющая имя файла, передается как параметр вместе с экземпляром класса XmlWriterSettings.

Класс XmlWriterSettings имеет свойства, управляющие способом создания Xml-докуметов. Например, свойство Indent – булевское значение, которое определяет, должны ли элементы выводиться с отступом. Свойство IndentChars содержит строку символов, используемую для отступа. По умолчанию это строка из двух символов. Свойство NewLine служит для определения символа новой строки.

Основные методы класса XmlWriter

WriteStartDocument()

добавляет объявление документа. После этого можно добавлять данные.

WriteEndDocument()

определяет конец документа (вставляет тег конца)

WriteStartElement()

добавляет новый элемент

WriteElementString

вставляет строку, указывающую имя и содержимое элемента

WriteEndElement

определяет конец элемента (вставляет тег конца)

Кроме этих, существуют другие методы, позволяющие выводить специальные разделы и атрибуты документа.

В результате в папке приложения будет создан такой файл:

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

<Catalog>

<book>

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

<author>

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

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

</author>

<price>120.00</price>

</book>

</Catalog>

Этот файл содержит XML-документ, описывающий одну книгу. Такой метод подходит для создания новых документов. А что делать, если необходимо добавить элемент в существующий XML-документ? Например добавить новую книгу в каталог. Для этого нужно воспользоваться классами DOM.

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