Поддержка привязки атрибута Nillable

Этот раздел посвящен технологии прежних версий. Веб-службы XML и клиенты веб-служб XML должны создаваться с использованием Windows Communication Foundation.

Платформа .NET Framework обеспечивает частичную поддержку привязки для атрибута nillable.

Объяснение

Если атрибут nillable имеет значение true в объявлении элемента <element>, то атрибут xsi:nil может встречаться в соответствующем элементе в пределах XML-документа экземпляра. (Префикс xsi обычно используется для пространства имен схемы XML, http://www.w3.org/2001/XMLSchema-instance).

Значение true атрибута xsi:nil элемента XML явно указывает, что у элемента отсутствует содержимое, будь то дочерние элементы или основной текст. Класс XmlSerializer приравнивает значение true атрибута nil к пустой ссылке (Nothing в Visual Basic). Сведения о том, как класс XmlSerializer сериализует и десериализует атрибут nil (включая особые случаи) см. в описании атрибута xsi:nil.

Если элемент объявлен со значением атрибута nillable="false" или без атрибута nillable, атрибут nil не может присутствовать в соответствующем элементе экземпляра, вне зависимости от его значения.

Создание атрибута nillable из кода

При создании документа схемы XML из набора классов в сборке программа Xsd.exe создает атрибут nillable для элемента с определенным типом значения, если этот тип допускает значение null. Это объясняется тем, что в качестве типа значения можно задать пустую ссылку (Nothing).

Для объекта ссылочного типа программа Xsd.exe проверяет значения свойства IsNullable определенных атрибутов, связанных с XML. Если свойству IsNullable присвоено значение true, программа Xsd.exe создает атрибут nillable и присваивает ему значение true. Свойство IsNullable используется определенными классами атрибутов, связанными с XML. Это свойство выглядит следующим образом:

Пример использования:

[System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
public string NameNullable;

Из этого кода программа Xsd.exe создает следующее объявление элемента XSD:

<xs:element minOccurs="1" maxOccurs="1" name="NameNullable" nillable="true" type="xs:string" />

Если свойству IsNullable присвоено значение true и применимому объекту во время выполнения задана пустая ссылка (Nothing), класс XmlSerializer создает атрибут xsi:nil со значением true.

Свойству IsNullable необходимо задать значение true, если атрибут применяется к типу значения, допускающему значение null.

Для ссылочных типов значение свойства IsNullable также определяет значение атрибута minOccurs элемента <element>. Если свойство IsNullable имеет значение true, атрибут minOccurs получает значение 1 (в противном случае ему присваивается значение 0). См. описание атрибута minOccurs.

Программа Xsd.exe также создает параметр nillable="true" в объявлении элемента <element> в некоторых других случаях, когда свойству IsNullable не присвоено значение true явным образом.

Создание кода из атрибута nillable

Когда программа Xsd.exe считывает параметр nillable="true", она создает параметр IsNullable=true для соответствующего атрибута, связанного с XML, применяемого к созданному классу или элементу. Для типов значений создаются типы, допускающие значение NULL.

Возможные содержащие элементы: <element>

См. также

Справочник

Поддержка привязки атрибута Xsi:nil
System.Xml.Schema.XmlSchemaElement.IsNillable