Schreiben von typisierten Daten

Aktualisiert: November 2007

Die XmlWriter-Klasse ermöglicht das Schreiben von typisierten Daten. Die WriteValue-Methode akzeptiert Werte mit einfachen CLR-Typen (Common Language Runtime). Diese Möglichkeit ist bei einfachen CLR-Typen und einer XmlWriter-Instanz nützlich. Sie können den typisierten Wert durch einen Aufruf der WriteValue-Methode schreiben, ohne ihn mit den Methoden der XmlConvert-Klasse vor der Ausgabe in einen Zeichenfolgenwert konvertieren zu müssen.

Schreiben von typisierten Werten

Die WriteValue-Methode konvertiert ein CLR-Objekt gemäß den Konvertierungsregeln für XSD-Datentypen (XML Schema Definition Language) in den gewünschten Ausgabetyp. Wenn das CLR-Objekt ein Listentyp ist (z. B. IEnumerable, IList oder ICollection), wird es wie ein Array des Werttyps behandelt.

Beim Aufruf der WriteValue-Methode konvertiert der XmlWriter den Wert gemäß den Konvertierungsregeln für XSD-Datentypen in die entsprechende Zeichenfolgendarstellung und schreibt ihn mit der WriteString-Methode.

Ausgeben als Text

Beim Aufruf von WriteValue wird der typisierte Wert gemäß der XmlConvert-Regeln für diesen Schematyp als Text serialisiert.

CLR-Typ

XML-Schema-Standarddatentyp (XSD)

System.Boolean

xsd:boolean

System.Byte**

xsd:integer

System.Byte[]

xsd:base64Binary

System.Char**

xsd:string

System.DateTime

xsd:dateTime

System.Decimal

xsd:decimal

System.Double

xsd:double

System.Int16**

xsd:integer

System.Int32

xsd:integer

System.Int64

xsd:integer

System.Single

xsd:float

System.String

xsd:string

System.IO.TextReader

xsd:string

System.IO.BinaryReader

xsd:base64Binary

**Diese Typen sind nicht CLS-kompatibel. Es gibt für sie keine entsprechende Methode in der XmlReader-Klasse.

Hinweis:

Wenn WriteValue mehrmals hintereinander aufgerufen wird, werden die Werte nicht durch Leerzeichen getrennt. Wenn Leeraum eingefügt werden soll, müssen Sie zwischen Aufrufen von WriteValue die WriteWhitespace-Methode aufrufen.

Schreiben in einen XML-Datenspeicher

Mit dem XmlWriter kann in einen XML-Datenspeicher geschrieben werden. Die XPathNavigator-Klasse kann z. B. ein XmlWriter-Objekt erstellen, das Knoten für ein XmlDocument-Objekt erstellt.

Wenn der Datenspeicher auf Schemainformationen zurückgreifen kann, löst die WriteValue-Methode eine Ausnahme aus, wenn versucht wird, mit dem WriteValue-Aufruf in einen unzulässigen Typ zu konvertieren.

Wenn der Datenspeicher keine Schemainformationen besitzt, behandelt die WriteValue-Methode alle Werte als xsd:anySimpleType-Typ.

Beispiel

Im folgenden Beispiel wird der Preis eines Buchs um 15 % erhöht, bevor der Preis geschrieben wird. Die Schemainformationen stammen vom Reader, der ein validierendes XmlReader-Objekt darstellt.

reader.ReadToDescendant("price")
writer.WriteStartElement("price")
writer.WriteValue(reader.ReadElementContentAsDouble() * 1.15)
writer.WriteEndElement()
reader.ReadToDescendant("price");
writer.WriteStartElement("price");
writer.WriteValue((reader.ReadElementContentAsDouble())*1.15);
writer.WriteEndElement();

Siehe auch

Weitere Ressourcen

Schreiben von XML mit dem "XmlWriter"

Typenunterstützung in den System.Xml-Klassen