
- •Лекция 5. Создание xml-документов в .Net
- •1. Использование класса XmlWriter - запись потоков данных Xml
- •2. Использование dom в .Net
- •2.1. Чтение xml-документа с помощью XmlNodeList
- •2.2. Вставка элементов (узлов) в xml- документ
- •3. Обработка атрибутов
- •3.1. Извлечение атрибутов с помощью XmlReader
- •3.2. Вставка атрибутов в документ с помощью XmlWriter
Лекция 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.