Читаем C# для профессионалов. Том II полностью

Мы создаем XmlTextReader для передачи в XmlValidationReader. Когда XmlValidationReader trv создан, можно использовать его по большей части так же, как XmlTextReader в предыдущих примерах. Различия состоят в том что в данном случае определен атрибут ValidationType и добавлен ValidationEventHandler. Каждый раз при возникновении ошибки проверки инициируется ValidationEvent. Затем можно будет обработать ошибку проверки любым приемлемым способом. В данном примере выводится MessageBox с описанием ошибки. Вот как выглядит MessageBox, когда инициируется ValdationEvent.

В отличие от некоторых синтаксических анализаторов XmlValidationReader после возникновения ошибки продолжает считывание. Имеется возможность определить серьезность ошибки проверки. Если окажется, что это серьезная ошибка, то можно остановить чтение.

Свойство Schemas класса XmlValidationReader содержит коллекцию XmlSchemaCollection, которая находится в пространстве имен System.Xml.Schema. В этой коллекции находятся предварительно загруженные схемы XSD и XDR, что позволяет выполнить очень быструю проверку, (особенно, если нужно проверить несколько документов), так как схему не нужно каждый раз перезагружать. Для получения выигрыша в производительности и создается объект XmlSchemaCollection. Метод Add имеет четыре перегружаемые версии. Можно передать объект на основе XmlSchema, объект на основе XmlSchemaCollection, строку string с пространством имен вместе со строкой string с URL файла схемы и, наконец, строку string

с пространством имен и объектом на основе XmlReader, который содержит схему.

Запись 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;

}

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Самоучитель UML
Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы. Цель книги – помочь программистам освоить новую методологию разработки корпоративных программных приложений для последующего применения полученных знаний с использованием соответствующих CASE-инструментов.

Александр Васильевич Леоненков , Александр Леоненков

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Прочая компьютерная литература / Книги по IT
Модель зрелости процессов разработки программного обеспечения
Модель зрелости процессов разработки программного обеспечения

Данный текст является переводом на русский язык описания одного из самых популярных стандартов постановки процесса разработки программного обеспечения (ПО).Я публикую книгу на своем сайте в открытом доступе для того, чтобы все интересующиеся данным вопросом могли прочитать ее и получить необходимую информацию совершенно свободно и бесплатно. Причина в том, что те методики, которые описаны в данном стандарте, как я считаю, просто обязаны взять на вооружение те разработчики ПО, которые этим занимаются серьёзно. По крайней мере, это касается 2-го и 3-го уровней CMM, так как применение этих практик дает существенное повышение в производительности и устойчивости процесса разработки ПО.

Билл Куртис , Владимир Рябикин , Марк Паулк , Мерилин Буш , Мэри Бет Хриссис , Сьюзен М. Гарсия , Чарльз В Вебер , Чарльз В. Вебер

Программирование, программы, базы данных / Программирование / Книги по IT