Freigeben über


Bindungsunterstützung für das nillable-Attribut

Dieses Thema bezieht sich auf eine veraltete Technologie. XML-Webdienste und XML-Webdienstclients sollten nun mithilfe der folgenden Technologie erstellt werden: Windows Communication Foundation.

.NET Framework stellt partielle Bindungsunterstützung für das nillable-Attribut bereit.

Erklärung

Wenn das nillable-Attribut in einer <element>-Deklaration auf true festgelegt ist, kann ein xsi:nil-Attribut in einem entsprechenden Element in einem XML-Instanzendokument angezeigt werden. (Das Präfix xsi wird im Allgemeinen für den Namespace der XML-Schemainstanz http://www.w3.org/2001/XMLSchema-instance verwendet.)

Der Wert true für das xsi:nil-Attribut in einem XML-Element gibt ausdrücklich an, dass das Element keinen Inhalt hat, d. h. weder untergeordnete Elemente noch Textkörper. Die XmlSerializer-Klasse setzt einen true-Wert für das nil-Attribut mit einem NULL-Verweis (Nothing in Visual Basic) gleich. Informationen dazu, wie die XmlSerializer-Klasse das nil-Attribut serialisiert und deserialisiert, einschließlich spezieller Fälle, finden Sie in den Ausführungen zum xsi:nil-Attribut.

Wenn ein Element mit nillable="false" oder keinem nillable-Attribut deklariert ist, kann ein nil-Attribut unabhängig vom zugehörigen Wert in einem entsprechenden Instanzelement nicht gültig angezeigt werden.

Generieren des nillable-Attributs aus dem Code

Beim Generieren eines XML-Schemadokuments aus einer Reihe von Klassen in einer Assembly erstellt Xsd.exe ein nillable-Attribut für einen Member eines Werttyps, wenn der Typ auf NULL festgelegt werden kann. Dies geschieht, weil Werttypen auf einen NULL-Verweis (Nothing) festgelegt werden können.

Bei einem Objekt eines Verweistyps überprüft Xsd.exe den Wert der IsNullable-Eigenschaft bestimmter XML-spezifischer Attribute. Wenn die IsNullable-Eigenschaft auf den Wert true festgelegt ist, erstellt Xsd.exe ein nillable-Attribut und legt dessen Wert auf true fest. Die IsNullable-Eigenschaft wird in bestimmten XML-Attributklassen verwendet. Die Eigenschaft wird folgendermaßen dargestellt:

Beispiel:

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

Aus diesem Code generiert Xsd.exe die folgende XSD-Elementdeklaration:

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

Wenn die IsNullable-Eigenschaft auf true festgelegt ist und ein anwendbares Objekt zur Laufzeit auf einen NULL-Verweis (Nothing) festgelegt wurde, generiert die XmlSerializer-Klasse ein xsi:nil-Attribut mit dem Wert true.

Die IsNullable-Eigenschaft muss für ein Attribut, das auf einen auf NULL festlegbaren Typ angewendet wird, auf true festgelegt werden.

Bei Verweistypen wird mit dem Wert der IsNullable-Eigenschaft zudem der Wert des minOccurs-Attributs eines <element>-Elements festgelegt. Der Wert true für IsNullable erstellt den Wert 1 für minOccurs, andernfalls ist der Wert 0. Weitere Informationen finden Sie in den Ausführungen zum minOccurs-Attribut.

Xsd.exe generiert darüber hinaus unter bestimmten anderen Umständen die nillable="true"-Einstellung in einer <element>-Deklaration, wenn eine IsNullable-Eigenschaft nicht ausdrücklich auf true festgelegt ist.

Generieren von Code aus dem nillable-Attribut

Beim Auftreten einer nillable="true"-Einstellung generiert Xsd.exe einen IsNullable=true-Parameter für das entsprechende XML-Attribut, das auf die generierte Klasse oder den generierten Member angewendet wird. Für Werttypen werden auf NULL festlegbare Typen generiert.

Mögliche enthaltene Elemente: <element>

Siehe auch

Verweis

Bindungsunterstützung für das xsi:nil-Attribut
System.Xml.Schema.XmlSchemaElement.IsNillable