Schreiben von typisierten Daten
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();