Einführung in die XML-SerialisierungIntroducing XML Serialization

Unter Serialisierung wird das Konvertieren des Zustands eines Objekts in eine Form verstanden, die sofort transportiert werden kann.Serialization is the process of converting an object into a form that can be readily transported. Beispielsweise können Sie ein Objekt serialisieren und mittels HTTP über das Internet zwischen einem Client und einem Server transportieren.For example, you can serialize an object and transport it over the Internet using HTTP between a client and a server. Bei der Deserialisierung wird das Objekt dagegen aus dem Stream rekonstruiert.On the other end, deserialization reconstructs the object from the stream.

Die XML-Serialisierung serialisiert nur die öffentlichen Felder und die Eigenschaftenwerte eines Objekts in einen XML-Stream.XML serialization serializes only the public fields and property values of an object into an XML stream. Bei der XML-Serialisierung werden keine Typinformationen eingeschlossen.XML serialization does not include type information. Wenn beispielsweise ein Book-Objekt gegeben ist, das im Library-Namespace existiert, ist nicht garantiert, dass es in ein Objekt des gleichen Typs deserialisiert wird.For example, if you have a Book object that exists in the Library namespace, there is no guarantee that it is deserialized into an object of the same type.

Hinweis

Methoden, Indexer, private Felder und schreibgeschützte Eigenschaften(ausgenommen schreibgeschützte Auflistungen) werden bei der XML-Serialisierung nicht konvertiert.XML serialization does not convert methods, indexers, private fields, or read-only properties (except read-only collections). Verwenden Sie DataContractSerializer statt der XML-Serialisierung, wenn alle öffentlichen und privaten Felder und Eigenschaften eines Objekts serialisiert werden sollen.To serialize all an object's fields and properties, both public and private, use the DataContractSerializer instead of XML serialization.

Bei der XML-Serialisierung ist die XmlSerializer-Klasse die zentrale Klasse, und die wichtigsten Methoden dieser Klasse sind die Serialize-Methode und die Deserialize-Methode.The central class in XML serialization is the XmlSerializer class, and the most important methods in this class are the Serialize and Deserialize methods. XmlSerializer erstellt C#-Dateien und kompiliert sie in DLL-Dateien, um diese Serialisierung auszuführen.The XmlSerializer creates C# files and compiles them into .dll files to perform this serialization. In .NET Framework 2.0 ist XML Serializer Generator Tool (Sgen.exe) dafür konzipiert, diese Serialisierungsassemblys vorab zu erzeugen, die zusammen mit der Anwendung bereitgestellt werden sollen, und die Startleistung zu verbessern.In .NET Framework 2.0, the XML Serializer Generator Tool (Sgen.exe) is designed to generate these serialization assemblies in advance to be deployed with your application and improve startup performance. Der XML-Stream von generiert die XmlSerializer ist kompatibel mit der Spezifikation des World Wide Web Consortium (W3C) XML-Schemadefinitionssprache (XSD) 1.0 Empfehlung.The XML stream generated by the XmlSerializer is compliant with the World Wide Web Consortium (W3C) XML Schema definition language (XSD) 1.0 recommendation. Darüber hinaus die generierten Datentypen kompatibel sind mit dem Dokument mit dem Titel "XML Schema Part 2: "Datatypes."Furthermore, the data types generated are compliant with the document titled "XML Schema Part 2: Datatypes."

Die Daten des Objekts werden durch Konstrukte der Programmiersprache beschrieben, z.B. Klassen, Felder, Eigenschaften, primitive Typen, Arrays oder auch eingebettetes XML in Form von XmlElement- oder XmlAttribute-Objekten.The data in your objects is described using programming language constructs like classes, fields, properties, primitive types, arrays, and even embedded XML in the form of XmlElement or XmlAttribute objects. Sie können eigene, mit Attributen versehene Klassen erstellen oder Klassen mit dem XML Schema Definition-Tool auf der Grundlage eines vorhandenen XML-Schemas generieren.You have the option of creating your own classes, annotated with attributes, or using the XML Schema Definition tool to generate the classes based on an existing XML Schema.

Wenn ein XML-Schema gegeben ist, können Sie das XML Schema Definition-Tool ausführen und so eine Reihe von Klassen erstellen, die für dieses Schema streng typisiert und mit Attributen versehen sind.If you have an XML Schema, you can run the XML Schema Definition tool to produce a set of classes that are strongly typed to the schema and annotated with attributes. Wenn eine Instanz einer solchen Klasse serialisiert wird, entspricht der generierte XML-Code dem XML-Schema.When an instance of such a class is serialized, the generated XML adheres to the XML Schema. Wenn eine solche Klasse gegeben ist, können Sie mit einem einfach bearbeitbaren Objektmodell programmieren und gleichzeitig sicher sein, dass der erzeugte XML-Code dem XML-Schema entspricht.Provided with such a class, you can program against an easily manipulated object model while being assured that the generated XML conforms to the XML schema. Dies ist eine Alternative dazu, andere Klassen von .NET Framework, wie die XmlReader-Klasse und die XmlWriter-Klasse, zum Analysieren und Schreiben von XML-Streams zu verwenden.This is an alternative to using other classes in the .NET Framework, such as the XmlReader and XmlWriter classes, to parse and write an XML stream. Weitere Informationen hierzu finden Sie unter XML Documents and Data (XML-Dokumente und -Daten).For more information, see XML Documents and Data. Diese Klassen ermöglichen es Ihnen, jeden XML-Stream zu analysieren.These classes allow you to parse any XML stream. Verwenden Sie dagegen XmlSerializer, wenn der XML-Stream einem bekannten XML-Schema entsprechen soll.In contrast, use the XmlSerializer when the XML stream is expected to conform to a known XML Schema.

Attribute steuern den von der XmlSerializer-Klasse generierten XML-Stream und ermöglichen es Ihnen, den XML-Namespace, den Elementnamen, den Attributnamen usw. des XML-Streams festzulegen.Attributes control the XML stream generated by the XmlSerializer class, allowing you to set the XML namespace, element name, attribute name, and so on, of the XML stream. Weitere Informationen zu diesen Attributen und ihrer Funktion in Bezug auf die XML-Serialisierung finden Sie unter Controlling XML Serialization Using Attributes (Steuern der XML-Serialisierung mithilfe von Attributen).For more information about these attributes and how they control XML serialization, see Controlling XML Serialization Using Attributes. Eine Tabelle der Attribute, die sich auf den generierten XML-Code auswirken, finden Sie unter Attributes That Control XML Serialization (Attribute zum Steuern der XML-Serialisierung).For a table of those attributes that are used to control the generated XML, see Attributes That Control XML Serialization.

Die XmlSerializer-Klasse kann überdies ein Objekt serialisieren und einen codierten SOAP-XML-Stream generieren.The XmlSerializer class can further serialize an object and generate an encoded SOAP XML stream. Das generierte XML entspricht Abschnitt 5 des World Wide Web Consortium-Dokuments mit dem Titel "Simple Object Access-Protokoll (SOAP) 1.1."The generated XML adheres to section 5 of the World Wide Web Consortium document titled "Simple Object Access Protocol (SOAP) 1.1." Weitere Informationen zu diesem Prozess finden Sie unter Vorgehensweise: Serialisieren eines Objekts als ein SOAP-codierten XML-Stream.For more information about this process, see How to: Serialize an Object as a SOAP-Encoded XML Stream. Eine Tabelle der Attribute, die sich auf den generierten XML-Code auswirken, finden Sie unter Attributes That Control Encoded SOAP Serialization (Attribute zum Steuern der codierten SOAP-Serialisierung).For a table of the attributes that control the generated XML, see Attributes That Control Encoded SOAP Serialization.

Die XmlSerializer-Klasse generiert die SOAP-Nachrichten, die durch XML-Webdienste erstellt und an XML-Webdienste übergeben werden.The XmlSerializer class generates the SOAP messages created by, and passed to, XML Web services. Zur Steuerung der SOAP-Nachrichten können Sie Attribute auf die Klassen, Rückgabewerte, Parameter und Felder einer Webdienstdatei (ASMX) anwenden.To control the SOAP messages, you can apply attributes to the classes, return values, parameters, and fields found in an XML Web service file (.asmx). Sie können sowohl die unter "Attribute zur Steuerung der XML-Serialisierung" als auch die unter "Attribute zur Steuerung der Serialisierung von codiertem SOAP" aufgeführten Attribute verwenden, weil XML-Webdienste sowohl das literale als auch das codierte SOAP-Format verarbeiten können.You can use both the attributes listed in "Attributes That Control XML Serialization" and "Attributes That Control Encoded SOAP Serialization" because an XML Web service can use either the literal or encoded SOAP style. Weitere Informationen dazu, wie sich der von einem XML-Webdienst erzeugte XML-Code mit Attributen steuern lässt, finden Sie unter XML Serialization with XML Web Services (XML-Serialisierung mit XML-Webdiensten).For more information about using attributes to control the XML generated by an XML Web service, see XML Serialization with XML Web Services. Weitere Informationen zu SOAP und XML-Webdiensten, finden Sie unter Anpassen von SOAP-Nachricht formatieren.For more information about SOAP and XML Web services, see Customizing SOAP Message Formatting.

Sicherheitsüberlegungen zu XmlSerializer-AnwendungenSecurity Considerations for XmlSerializer Applications

Beim Erstellen einer Anwendung, die die XmlSerializer-Klasse verwendet, sollten Ihnen die folgenden Elemente und deren Auswirkungen bekannt sein:When creating an application that uses the XmlSerializer, you should be aware of the following items and their implications:

  • Die XmlSerializer-Klasse erstellt C#-Dateien (CS), kompiliert sie zu DLL-Dateien und legt diese in dem Verzeichnis ab, das durch die Umgebungsvariable TEMP angegeben wird. Die Deserialisierung wird in diesen DLL-Dateien ausgeführt.The XmlSerializer creates C# (.cs) files and compiles them into .dll files in the directory named by the TEMP environment variable; serialization occurs with those DLLs.

    Hinweis

    Diese Serialisierungsassemblys können mit dem Tool SGen.exe im Voraus erzeugt und signiert werden.These serialization assemblies can be generated in advance and signed by using the SGen.exe tool. Dieses Tool kann nicht auf einem Server von Webdiensten ausgeführt werden.This does not work a server of Web services. Das heißt, es kann nur von Clients und für die manuelle Serialisierung verwendet werden.In other words, it is only for client use and for manual serialization.

    Der Code und die DLL-Dateien sind während ihrer Erstellung und Kompilierung anfällig gegenüber bösartigen Prozessen.The code and the DLLs are vulnerable to a malicious process at the time of creation and compilation. Wenn ein Computer mit Microsoft Windows NT 4.0 oder höher eingesetzt wird, können zwei oder mehr Benutzer gemeinsam auf das Verzeichnis TEMP zugreifen.When using a computer running Microsoft Windows NT 4.0 or later, it might be possible for two or more users to share the TEMP directory. Die gemeinsame Nutzung eines TEMP-Verzeichnisses ist gefährlich, wenn die beiden Konten über unterschiedliche Sicherheitsberechtigungen verfügen und der Benutzer mit den höheren Sicherheitsberechtigungen eine Anwendung ausführt, die XmlSerializer verwendet.Sharing a TEMP directory is dangerous if the two accounts have different security privileges and the higher-privilege account runs an application using the XmlSerializer. In diesem Fall kann ein Benutzer die Sicherheit des Computers verletzen, indem er die CS- oder die DLL-Datei, die kompiliert wird, durch eine andere Datei ersetzt.In this case, one user can breach the computer's security by replacing either the .cs or .dll file that is compiled. Um diesen Aspekt auszuschließen, stellen Sie immer sicher, dass für jedes Benutzerkonto auf dem Computer ein eigenes Profil vorhanden ist.To eliminate this concern, always be sure that each account on the computer has its own profile. Standardmäßig zeigt die TEMP-Umgebungsvariable für jedes Konto auf ein anderes Verzeichnis.By default, the TEMP environment variable points to a different directory for each account.

  • Wenn ein böswilliger Benutzer einen fortlaufenden Stream von XML-Daten an einen Webserver sendet (ein Denial-of-Service-Angriff), dann fährt die XmlSerializer-Anwendung solange mit der Verarbeitung von Daten fort, bis die Ressourcen des Computers erschöpft sind.If a malicious user sends a continuous stream of XML data to a Web server (a denial of service attack), then the XmlSerializer continues to process the data until the computer runs low on resources.

    Diese Art von Angriff wird unterbunden, wenn ein Computer mit Internet Information Services (IIS) verwendet und die Anwendung in IIS ausgeführt wird.This kind of attack is eliminated if you are using a computer running Internet Information Services (IIS), and your application is running within IIS. IIS umfasst ein Gate, das keine Streams verarbeitet, die größer als ein definierter Wert (der Standardwert ist 4 KB) sind.IIS features a gate that does not process streams longer than a set amount (the default is 4 KB). Wenn Sie eine Anwendung erstellen, die IIS nicht verwendet und mit XmlSerializer deserialisiert, sollten Sie ein ähnliches Gate implementieren, das Denial-of-Service-Angriffe verhindert.If you create an application that does not use IIS and deserializes with the XmlSerializer, you should implement a similar gate that prevents a denial of service attack.

  • XmlSerializer serialisiert Daten und führt jeden Code mit jedem ihm gegebenen Typ aus.The XmlSerializer serializes data and runs any code using any type given to it.

    Ein bösartiges Objekt kann auf zweierlei Art eine Bedrohung darstellen.There are two ways in which a malicious object presents a threat. Es kann bösartigen Code ausführen, und es kann bösartigen Code in die C#-Datei einfügen, die von XmlSerializer erstellt wird.It could run malicious code or it could inject malicious code into the C# file created by the XmlSerializer. Im ersten Fall, wenn ein bösartiges Objekt eine zerstörerische Prozedur auszuführen versucht, trägt die Codezugriffssicherheit dazu bei, dass kein Schaden angerichtet werden kann.In the first case, if a malicious object tries to run a destructive procedure, code access security helps prevent any damage from being done. Im zweiten Fall besteht theoretisch die Möglichkeit, dass ein bösartiges Objekt auf irgendeine Weise Code in die von XmlSerializer erzeugte C#-Datei einfügen kann.In the second case, there is a theoretical possibility that a malicious object may somehow inject code into the C# file created by the XmlSerializer. Obwohl dieses Problem gründlich untersucht wurde ein solcher Angriff als unwahrscheinlich gilt, sollten Sie entsprechende Vorsichtsmaßnahmen treffen und nie Daten mit einem unbekannten oder nicht vertrauenswürdigen Typ serialisieren.Although this issue has been examined thoroughly, and such an attack is considered unlikely, you should take the precaution of never serializing data with an unknown and untrusted type.

  • Serialisierte vertrauliche Daten sind unter Umständen verwundbar.Serialized sensitive data might be vulnerable.

    Nach der XmlSerializer serialisiert wurden, können Sie eine XML-Datei oder andere Datenspeicher gespeichert werden.After the XmlSerializer has serialized data, it can be stored as an XML file or other data store. Wenn dieser Datenspeicher für andere Prozesse zugänglich oder im Intranet oder dem Internet sichtbar ist, können die Daten gestohlen und missbraucht werden.If your data store is available to other processes, or is visible on an intranet or the Internet, the data can be stolen and used maliciously. Wenn Sie beispielsweise eine Anwendung erstellen, die Bestellungen serialisiert, welche Kreditkartennummern enthalten, dann sind diese Daten streng vertraulich.For example, if you create an application that serializes orders that include credit card numbers, the data is highly sensitive. Um Missbrauch oder Diebstahl zu verhindern, sollten Sie den Speicherort der Daten stets schützen und durch geeignete Maßnahmen sicherstellen, dass die Daten vertraulich bleiben.To help prevent this, always protect the store for your data and take steps to keep it private.

Serialisierung einer einfachen KlasseSerialization of a Simple Class

Im folgenden Codebeispiel wird eine grundlegende Klasse mit einem öffentlichen Feld veranschaulicht.The following code example shows a basic class with a public field.

Public Class OrderForm
    Public OrderDate As DateTime
End Class
public class OrderForm
{
    public DateTime OrderDate;
}

Wenn eine Instanz dieser Klasse serialisiert wird, könnte dies etwa so aussehen.When an instance of this class is serialized, it might resemble the following.

<OrderForm>
    <OrderDate>12/12/01</OrderDate>
</OrderForm>

Weitere Beispiele zur Serialisierung finden Sie unter Examples of XML Serialization (Beispiele für die XML-Serialisierung).For more examples of serialization, see Examples of XML Serialization.

Elemente, die serialisiert werden könnenItems That Can Be Serialized

Die folgenden Elemente können mit der XmlSerializer-Klasse serialisiert werden:The following items can be serialized using the XmLSerializer class:

  • Öffentliche Eigenschaften mit Lese-/Schreibzugriff und Felder von öffentlichen KlassenPublic read/write properties and fields of public classes.

  • Klassen, die ICollection oder IEnumerable implementieren.Classes that implement ICollection or IEnumerable.

    Hinweis

    Nur Auflistungen werden serialisiert, öffentliche Eigenschaften nichtOnly collections are serialized, not public properties.

  • XmlElement-Objekte.XmlElement objects.

  • XmlNode-Objekte.XmlNode objects.

  • DataSet-Objekte.DataSet objects.

Weitere Informationen zur Serialisierung und Deserialisierung von Objekten finden Sie unter Vorgehensweise: Ein Objekt serialisieren und Vorgehensweise: Deserialisieren eines Objekts.For more information about serializing or deserializing objects, see How to: Serialize an Object and How to: Deserialize an Object.

Vorteile der XML-SerialisierungAdvantages of Using XML Serialization

Die XmlSerializer -Klasse gibt Ihnen uneingeschränkte und flexibles Kontrolle beim Serialisieren eines Objekts als XML.The XmlSerializer class gives you complete and flexible control when you serialize an object as XML. Wenn Sie einen XML-Webdienst erstellen, können Sie Attribute, die die Serialisierung steuern, auf Klassen und Member anwenden, um sicherzustellen, dass die XML-Ausgabe dem gegebenen Schema entspricht.If you are creating an XML Web service, you can apply attributes that control serialization to classes and members to ensure that the XML output conforms to a specific schema.

XmlSerializer ermöglicht beispielsweise Folgendes:For example, XmlSerializer enables you to:

  • Angeben, ob ein Feld oder eine Eigenschaft als Attribut oder ein Element codiert werden soll.Specify whether a field or property should be encoded as an attribute or an element.

  • Angeben des zu verwendenden XML-Namespace.Specify an XML namespace to use.

  • Angeben des Namens eines Elements oder Attributs, wenn ein Feld- oder Eigenschaftenname unpassend ist.Specify the name of an element or attribute if a field or property name is inappropriate.

Ein weiterer Vorteil der XM-Serialisierung besteht darin, dass für die von Ihnen entwickelten Anwendungen keine Einschränkungen gelten, solange der erzeugte XML-Stream dem gegebenen Schema entspricht.Another advantage of XML serialization is that you have no constraints on the applications you develop, as long as the XML stream that is generated conforms to a given schema. Stellen Sie sich ein Schema vor, das das zum Beschreiben von Büchern dient.Imagine a schema that is used to describe books. Es stellt als Elemente den Titel, Autor, Verleger und die ISBN-Nummer zur Verfügung.It features a title, author, publisher, and ISBN number element. Sie können eine Anwendung entwickeln, die die XML-Daten auf die gewünschte Weise verarbeitet, z. B. als Buchbestellung oder Bücherbestand.You can develop an application that processes the XML data in any way you want, for example, as a book order, or as an inventory of books. In beiden Fällen besteht die einzige Anforderung darin, dass der XML-Stream dem angegebenen XSD-Schema (XML Schema Definition Language) entspricht.In either case, the only requirement is that the XML stream conforms to the specified XML Schema definition language (XSD) schema.

Überlegungen zur XML-SerialisierungXML Serialization Considerations

Folgende Punkte sollten bei der Verwendung der XmlSerializer-Klasse berücksichtigt werden:The following should be considered when using the XmlSerializer class:

  • Das Tool Sgen.exe wurde speziell entworfen, um Serialisierungsassemblys mit optimaler Leistung zu generieren.The Sgen.exe tool is expressly designed to generate serialization assemblies for optimum performance.

  • Die serialisierten Daten enthalten nur die Daten selbst und die Struktur der Klassen.The serialized data contains only the data itself and the structure of your classes. Typidentität und Assemblyinformationen sind nicht darin enthalten.Type identity and assembly information are not included.

  • Es können nur öffentliche Eigenschaften und Felder serialisiert werden.Only public properties and fields can be serialized. Eigenschaften müssen über öffentliche Accessoren (get- und set-Methoden) verfügen.Properties must have public accessors (get and set methods). Wenn nicht öffentliche Daten serialisiert werden müssen, verwenden Sie die DataContractSerializer-Klasse statt der XML-Serialisierung.If you must serialize non-public data, use the DataContractSerializer class rather than XML serialization.

  • Eine Klasse muss über einen Standardkonstruktor verfügen, damit sie von XmlSerializer serialisiert wird.A class must have a default constructor to be serialized by XmlSerializer.

  • Methoden können nicht serialisiert werden.Methods cannot be serialized.

  • XmlSerializer kann Klassen verarbeiten, die IEnumerable oder ICollection anders implementieren, wenn sie die folgenden Anforderungen erfüllen.XmlSerializer can process classes that implement IEnumerable or ICollection differently if they meet certain requirements, as follows.

    Eine Klasse, die IEnumerable implementiert, muss eine öffentliche Add-Methode mit einem einzigen Parameter implementieren.A class that implements IEnumerable must implement a public Add method that takes a single parameter. Der Parameter der Add-Methode muss von dem Typ (polymorph) sein, den die IEnumerator.Current-Eigenschaft zurückgibt, die von der GetEnumerator-Methode zurückgegeben wird.The Add method's parameter must be consistent (polymorphic) with the type returned from the IEnumerator.Current property returned from the GetEnumerator method.

    Eine Klasse, die ICollection zusätzlich zu IEnumerable implementiert (z.B. CollectionBase) muss eine öffentliche und mit Item indizierte Eigenschaft (Indexer in C#), die einen Integer-Wert annimmt, sowie eine öffentliche Count-Eigenschaft vom Typ Integer aufweisen.A class that implements ICollection in addition to IEnumerable (such as CollectionBase) must have a public Item indexed property (an indexer in C#) that takes an integer and it must have a public Count property of type integer. Der Parameter, der der Add-Methode übergeben wird, muss vom gleichen Typ sein wie der Wert, den die Item-Eigenschaft zurückgibt, oder muss ein Basistyp dieses Typs sein.The parameter passed to the Add method must be the same type as that returned from the Item property, or one of that type's bases.

    Bei Klassen, die ICollection implementieren, werden die zu serialisierenden Werte nicht durch einen Aufruf von Item, sondern über die indizierte GetEnumerator-Eigenschaft abgerufen.For classes that implement ICollection, values to be serialized are retrieved from the indexed Item property rather than by calling GetEnumerator. Öffentliche Felder und Eigenschaften werden nicht serialisiert, mit Ausnahme von öffentlichen Feldern, die eine andere Auflistungsklasse zurückgeben (eine Klasse, die ICollection implementiert).Also, public fields and properties are not serialized, with the exception of public fields that return another collection class (one that implements ICollection). Ein Beispiel finden Sie in Examples of XML Serialization (Beispiele für die XML-Serialisierung).For an example, see Examples of XML Serialization.

XSD-DatentypzuordnungXSD Data Type Mapping

Das W3C-Dokument mit dem Titel XML Schema Part 2: Datentypen gibt Sie die einfachen Datentypen, die zulässig sind, in ein Schema für XML Schema Definition Language (XSD).The W3C document titled XML Schema Part 2: Datatypes specifies the simple data types that are allowed in an XML Schema definition language (XSD) schema. Für viele dieser Datentypen (beispielsweise int und decimal) ist ein entsprechender Datentyp im .NET Framework vorhanden.For many of these (for example, int and decimal), there is a corresponding data type in the .NET Framework. Für einige XML-Datentypen sind jedoch keine entsprechenden Datentypen im .NET Framework verfügbar (beispielsweise für den Datentyp NMTOKEN).However, some XML data types do not have a corresponding data type in the .NET Framework (for example, the NMTOKEN data type). In diesen Fällen erzeugen Sie mit dem XML Schema Definition-Tool (XML Schema Definition Tool (Xsd.exe)) Klassen anhand eines Schemas. Ein entsprechendes Attribut wird auf ein Member vom Typ „Zeichenfolge“ angewendet, und die DataType-Eigenschaft wird auf den Namen des XML-Datentyps festgelegt.In such cases, if you use the XML Schema Definition tool (XML Schema Definition Tool (Xsd.exe)) to generate classes from a schema, an appropriate attribute is applied to a member of type string, and its DataType property is set to the XML data type name. Wenn ein Schema beispielsweise ein Element namens „MyToken“ mit dem XML-Datentyp NMTOKEN aufweist, enthält die erzeugte Klasse unter Umständen einen Member, der wie im folgenden Beispiel aussieht.For example, if a schema contains an element named "MyToken" with the XML data type NMTOKEN, the generated class might contain a member as shown in the following example.

<XmlElement(DataType:="NMTOKEN")> _
Public MyToken As String
[XmlElement(DataType = "NMTOKEN")]
public string MyToken;

Ebenso gilt: Wenn Sie eine Klasse erstellen, die einem bestimmten XML-Schema (XSD) entsprechen soll, müssen Sie das entsprechende Attribut anwenden und deren DataType-Eigenschaft auf den Namen des gewünschten XML-Datentyps festlegen.Similarly, if you are creating a class that must conform to a specific XML Schema (XSD), you should apply the appropriate attribute and set its DataType property to the desired XML data type name.

Eine umfassende Liste mit Typzuordnungen finden Sie in der DataType-Eigenschaft der folgenden Attributklassen:For a complete list of type mappings, see the DataType property for any of the following attribute classes:

Siehe auchSee also