Книга: C# для профессионалов. Том II
Запись XML
Запись XML
Класс XmlTextWriter
позволяет записывать XML в поток, файл или объект TextWriter
. Подобно XmlTextReader
он делает это только вперед, некэшируемым образом. XmlTextWriter
можно конфигурировать различным образом, что позволяет определить такие вещи, как наличие или отсутствие отступов, величину отступа, какой использовать символ кавычки в значениях атрибутов, и поддерживаются ли пространства имен. Свойство DataTypeNamespace
определяет, как строго значения типов преобразуются в текст XML. Для этого свойства допустимо значение urn:schemas-microsoft-com:datatypes
, которое поддерживает типы данных XDR, и другое значение www.w3.org/1999/XMLSchema-data-types, которое является схемой W3C типов данных XSD. Чтобы использовать, например, тип данных TimeSpan
, необходимо будет задать это свойство для типов данных XSD.
Приведем простой пример, чтобы увидеть, как может использоваться класс TextWriter
(пример находится в папке XMLWriterSample1
):
private void button1_Click(object sender, System.EventArgs e) {
// измените в соответствии с используемой структурой путей доступа
string fileName="......booknew.xml";
//создайте XmlTextWriter
XmlTextWriter tw=new XmlTextWriter(fileName, null);
// задайте форматирование с отступом
tw.Formatting=Formatting.Indented;
tw.WriteStartDocument();
//Начать создание элементов и атрибутов
tw.WriteStartElement("book");
tw.WriteAttributeString("genre", "Mystery");
tw.WriteAttributeString("publicationdate", "2001");
tw.WriteAttributeString("ISBN", "123456789");
tw.WriteElementString("title", "Case of the Missing Cookie");
tw.WriteStartElement("author");
tw.WriteElementString("name", "Cookie Monster");
tw.WriteEndElement();
tw.WriteElementString("price", "9.99");
tw.WriteEndElement();
tw.WriteEndDocument();
// очистить
tw.Flush();
tw.Close();
}
Создадим новый файл booknew.xml
и добавим новую книгу. Объект XmlTextWriter
заменит существующий файл. Вставку нового элемента или узла в существующий документ рассмотрим позже. Экземпляр объекта XmlTextWriter
создается с помощью объекта FileStream
в качестве параметра. Можно также передать строку с именем файла и путем доступа или объект на основе TextWriter
. При задании свойства Indenting
узлы-потомки будут автоматически делать отступ от предка. Метод WriteStartDocument()
помещает объявление документа. Начинаем запись данных. Сначала идет элемент book
. Затем добавляем атрибуты genre
, publicationdate
и ISBN
. После чего записываем элементы title
, author
, и price. Отметим, что элемент author
имеет элемент-потомок name
.
После нажатия на кнопку будет создан следующий файл booknew.xml
:
<?xml version="1 .0"?>
<book genre= "Mystery" publicationdate="2001" ISBN="123456789">
<title>Case of the Missing Cookie</title>
<author>
<name>Cookie Monster</name>
</author>
<price>9,99</price>
</book>
Так же как в документе XML, здесь имеются начальный метод и конечный метод (WriteStartElement
и WriteEndElement
). Вложенность контролируется отслеживанием начала и окончания записи элементов и атрибутов. Это можно видеть при добавлении элемента потомка name
к элементу authors
. Отметим, как организуются вызовы методов WriteStartElement
и WriteEndElement
и как это связывается с выведенным документом XML.
В дополнение к WriteElementString
и WriteAtributeString
имеется несколько других специализированных методов записи. Метод WriteCDate
будет выводить раздел CDate (<!CDATE[...]]>)
, взяв текст для записи из параметра. WriteComment записывает комментарий в подходящем формате XML. WriteChars записывает содержимое символьного буфера. Это работает аналогично методу ReadChars
, который был рассмотрен ранее. Оба они используют один и тот же тип параметров. Методу WriteChar
нужен буфер (массив символов), начальная позиция для записи (целое значение) и число символов для записи (целое значение).
Чтение и запись XML с помощью классов, основанных на XMLReader
и XMLWriter, осуществляются очень просто. Далее мы рассмотрим реализацию DOM пространства имен System.Xml
. Это классы на основе XmlDocument
и XmlNode
.
- Создание объекта для обмена данными между XML-файлом и формой
- Копирование данных из XML-файла в таблицу БД
- Запись XML-данных
- Основные принципы чтения и записи XML-данных
- Чтение и запись XML
- Тестирование Web-сервиса XML с помощью WebDev.WebServer.exe
- Преобразование XML в реляционную базу данных
- 4.4.3. Чтение и запись
- 1.18. Запись телефонных звонков
- Как сделать перезапись файлов в Проводнике более удобной?
- Не могу войти в систему под учетной записью администратора, поскольку среди имен пользователей, отображаемых на экране п...
- При попытке войти в систему Пользователю1 выдается предупреждение, что загрузился временный профиль и все сделанные изме...