C# для профессионалов. Том II - [6]
после возникновения ошибки продолжает считывание. Имеется возможность определить серьезность ошибки проверки. Если окажется, что это серьезная ошибка, то можно остановить чтение.
Свойство >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();
>}
Создадим новый файл >booknew.xml
и добавим новую книгу. Объект >XmlTextWriter
заменит существующий файл. Вставку нового элемента или узла в существующий документ рассмотрим позже. Экземпляр объекта >XmlTextWriter
создается с помощью объекта >FileStream
в качестве параметра. Можно также передать строку с именем файла и путем доступа или объект на основе >TextWriter
. При задании свойства >Indenting
узлы-потомки будут автоматически делать отступ от предка. Метод >WriteStartDocument()
помещает объявление документа. Начинаем запись данных. Сначала идет элемент >book
. Затем добавляем атрибуты >genre
, >publicationdate
и >ISBN
. После чего записываем элементы >title
, >author
, и price. Отметим, что элемент >author
имеет элемент-потомок >name
.
После нажатия на кнопку будет создан следующий файл >booknew.xml
:
>
>
>
>
>
>
>
>
Так же как в документе XML, здесь имеются начальный метод и конечный метод (>WriteStartElement
и >WriteEndElement
). Вложенность контролируется отслеживанием начала и окончания записи элементов и атрибутов. Это можно видеть при добавлении элемента потомка >name
к элементу >authors
. Отметим, как организуются вызовы методов >WriteStartElement
и >WriteEndElement
и как это связывается с выведенным документом XML.
В дополнение к >WriteElementString
и >WriteAtributeString
имеется несколько других специализированных методов записи. Метод >WriteCDate
будет выводить раздел >CDate ()
, взяв текст для записи из параметра. WriteComment записывает комментарий в подходящем формате XML. WriteChars записывает содержимое символьного буфера. Это работает аналогично методу >ReadChars
, который был рассмотрен ранее. Оба они используют один и тот же тип параметров. Методу >WriteChar
нужен буфер (массив символов), начальная позиция для записи (целое значение) и число символов для записи (целое значение).
Чтение и запись XML с помощью классов, основанных на >XMLReader
и XMLWriter, осуществляются очень просто. Далее мы рассмотрим реализацию DOM пространства имен >System.Xml
. Это классы на основе >XmlDocument
и >XmlNode
.
Объектная модель документа в .NET
Реализация объектной модели документа (DOM, Document Object Model) в .NET поддерживает спецификации W3C DOM Level 1 и Core DOM Level 2. DOM реализуется с помощью класса
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.