Контроль генерируемых XML-данных

Контроль генерируемых XML-данных

Если у вас есть опыт использования XML-технологий, вы должны хорошо знать о том, что в документе XML очень важно гарантировать соответствие элементов набору правил, обеспечивающих "допустимость" данных. Следует понимать, что "допустимость" XML-документа не связана напрямую с синтаксической правильностью его XML-элементов (например, с требованием о том, что все открываемые элементы должны иметь закрывающие их дескрипторы). Скорее, допустимость документов связана с правилами форматирования (например, поле X должно быть атрибутом и не вложенным элементом), которые обычно задаются XML-схемой или DTD-файлом (файл определения типа документа),

По умолчанию все поля данных типа [Serializable] форматируются, как элементы, а не как XML-атрибуты. Для контроля того, как XmlSerializer компонует генерируемый XML-документ, следует указать для типов [Serializable] дополнительные атрибуты из пространства имен System.Xml.Serialization. В табл. 17.1 представлены некоторые из атрибутов, влияющих на кодирование XML-данных, передаваемых в поток.

Таблица 17.1. Атрибуты пространства имен System.Xml.Serialization, связанные с сериализацией объектов

Атрибут Описание
XmlAttributeAttribute Член будет сохранен в виде XML-атрибута
XmlElementAttribute Поле или свойство будут сохранены в виде XML-элемента
XmlEnumAttribute Имя элемента перечня
XmlRootAttribute Атрибут, контролирующий формат корневого элемента (пространство имен и имя элемента)
XmlTextAttribute Свойство или поле должно сохраняться в виде XML-текста
XmlTypeAtttribute Имя и пространство имен XML-типа 

Для примера давайте сначала выясним, как поля данных JamesBondCar сохраняются в XML-документе в настоящий момент.

‹?xml version="1.0" encodings="utf-8"?›

‹JamesBondCar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd=http://www.w3.org/2001/XMLSchema›

 …

 ‹canFly›true‹/canFly›

 ‹canSubmerge›false‹/canSubmerge

/JamesBondCar›

Если вы хотите указать пользовательское пространство имен XML, соответствующее JamesBondCar, и кодировать значения canFly и canSubmerge в виде XML-атрибутов, это можно сделать с помощью изменения определения JamesBondCar в C# следующим образом.

[Serializablе, XmlRoot(Namespace = "http://www.intertechtraining.com")]

public class JamesBondCar: Car {

 …

 [XmlAttribute]

 public bool canFly;

 [XmlAttribute]

 public bool canSubmerge;

}

Это должно дать в результате следующий XML-документ (обратите внимание на открывающий элемент ‹JamesBondCar›).

‹?xml version="1.0" encodin="utf-8"?›

‹JamesBondCar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" canFly="true" canSubmerge="false"

xmlns="http://www.intertechtraining.com"›

 …

‹/JamesBondCar›"

Конечно, есть множество других атрибутов, которые вы можете использовать для управления процессом генерирования XML-документа с помощью XmlSerializer. Чтобы ознакомиться со всеми опциями, выполните поиск информации о пространстве имен System.Xml.Serialization в документации .NET Framework 2.0 SDK

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

3.2.3.1. Орфографический контроль

Из книги Прикладное программное обеспечение: системы автоматической обработки текстов автора Мальковский Михаил Георгиевич

3.2.3.1. Орфографический контроль Программы орфографического контроля обнаруживают (и предлагают варианты исправления) мотивированные грамматические ошибки в основах и окончаниях (флексиях) слов, записанных в словарь системы, и слов, встретившихся ей впервые (незнакомых),


3.2.3.5. Синтаксический контроль

Из книги Сущность технологии СОМ. Библиотека программиста автора Бокс Дональд

3.2.3.5. Синтаксический контроль Программа СИНТ1Программа СИНТ1 находит в указанной области именные словосочетания вида ‹прилагательное› + ‹существительное› и ‹существительное› + ‹существительное в форме родит. падежа› и др. Программа может оказаться


3.2.3.6. Пунктуационный контроль

Из книги Язык программирования С# 2005 и платформа .NET 2.0. [3-е издание] автора Троелсен Эндрю

3.2.3.6. Пунктуационный контроль Пунктуационные ошибки в реальных предложениях русского языка встречаются довольно часто. Разделим их условно на две группы. Ошибки одной группы связаны с уровнем пунктуационной грамотности и появляются в основном в тех типах текстов


3.2.3.7. Семантический контроль

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен

3.2.3.7. Семантический контроль Программа СЕМ1Программа обнаруживает несовпадение ожидаемых семантических признаков актантов (подлежащее, дополнения) глагола и признаков слов (групп слов), реально занимающих соответствующие позиции. Такое несовпадение мешает завершить


Контроль доступа

Из книги Искусство программирования для Unix автора Реймонд Эрик Стивен


Контроль анимации

Из книги Windows Script Host для Windows 2000/XP автора Попов Андрей Владимирович

Контроль анимации Следующей задачей является обеспечение гарантий того, что тип Timer сместит текущий фрейм визуализации в рамках PictureBox. Снова напомним, что число фреймов в цикле анимации зависит от текущей скорости автомобиля. Необходимость изменений изображений в PictureBox


Контроль допустимости вводимых данных

Из книги Сетевые средства Linux автора Смит Родерик В.

Контроль допустимости вводимых данных Теперь давайте добавим в нашу страницу default.htm клиентскую поддержку контроля вводимых в форму данных. Нам нужно, чтобы при щелчке пользователя на кнопке Отправить вызвалась функция JavaScript, которая проверяла бы каждый текстовый блок


19.2.1.3. Не следует включать заплаты для генерируемых файлов

Из книги Linux: Полное руководство автора Колисниченко Денис Николаевич

19.2.1.3. Не следует включать заплаты для генерируемых файлов Прежде чем отправить заплату, необходимо просмотреть ее и удалить все диапазоны кода, предназначенные для файлов, которые должны генерироваться автоматически после применения куратором исправлений и


19.2.1.3. Не следует включать заплаты для генерируемых файлов

Из книги Access 2002: Самоучитель автора Дубнов Павел Юрьевич

19.2.1.3. Не следует включать заплаты для генерируемых файлов Прежде чем отправить заплату, необходимо просмотреть ее и удалить все диапазоны кода, предназначенные для файлов, которые должны генерироваться автоматически после применения куратором исправлений и


Обработка событий, генерируемых элементами управления формы

Из книги Язык Си - руководство для начинающих автора Прата Стивен

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


Контроль операций NTP

Из книги Установка, настройка и восстановление Windows 7 на 100% автора Ватаманюк Александр Иванович

Контроль операций NTP Помимо визуального контроля показаний часов с помощью программы xclock, для мониторинга операций NTP часто применяется программа ntpq. После вызова эта программа запрашивает команды, определяющие ее дальнейшую работу. Команды вводятся в текстовом режиме.


26.5.6. Тотальный контроль

Из книги автора

26.5.6. Тотальный контроль До сих пор мы рассматривали только системные вызовы для работы с сообщениями очереди, сейчас рассмотрим системный вызов msgctl(), предназначенный для контроля самой очереди.int msgctl(int msgqid, int cmd, struct msqid_ds *buf);Первый аргумент — это ID очереди, второй —


26.6.3. Контроль семафора

Из книги автора

26.6.3. Контроль семафора Для контроля семафора используется системный вызов semctl():int semctl(int semid, int semnum, int cmd, union semun arg);Первый аргумент — это идентификатор семафора, второй — номер семафора во множестве семафоров (нумерация начиняется с 0). В отличие от очереди сообщений, где


Импорт базы данных Контроль ЧС

Из книги автора

Импорт базы данных Контроль ЧС Технология импорта базы данных Контроль ЧС в основном та же, что и в предыдущем случае. Как вы помните, исходная база данных существует в среде FoxPro. Поскольку в программном обеспечении Access 2002 отсутствует конвертер формата FoxPro, на первом


Контроль ошибок

Из книги автора

Контроль ошибок Существует широко распространенная проблема, связанная с вводом в машину данных, которые должны использоваться определенным образом. Один из методов ее решения состоит в "контроле ошибок". Это означает, что, перед тем как приступить к обработке данных,


Родительский контроль

Из книги автора

Родительский контроль Механизм Родительский контроль перешел в Windows 7 по наследству от Windows Vista, и его предназначение нисколько не изменилось. Как и прежде, с его помощью можно настраивать разрешение на использование программ и доступ в Интернет для любых пользователей,