Поддержка привязки атрибута 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