型指定されたデータの書き込み
XmlWriter クラスを使用すると、型指定されたデータの書き込みを行うことができます。 WriteValue メソッドは、共通言語ランタイム (CLR) の単純型の値を受け付けます。 この機能は、CLR の単純型および XmlWriter インスタンスを取り扱う場合に便利です。 WriteValue メソッドを呼び出すと、型指定された値を書き込むことができます。書き込む前に XmlConvert クラスのメソッドを使用して、型指定されたデータを文字列値に変換する必要はありません。
型指定された値の書き込み
WriteValue メソッドは CLR オブジェクトを受け取り、XML スキーマ定義言語 (XSD) のデータ型変換規則を使用して、入力値を目的の出力型に変換します。 CLR オブジェクトが IEnumerable、IList、ICollection などのリスト型の場合は、値型の配列として扱われます。
WriteValue メソッドが呼び出されると、XmlWriter が、XML スキーマ (XSD) のデータ型変換規則に従って値をその文字列表現に変換し、WriteString メソッドを使用して書き出します。
テキストへの書き込み
WriteValue が呼び出されると、型指定された値は、そのスキーマ型に関する XmlConvert 規則を使用してテキストにシリアル化されます。
CLR 型 |
既定の XML スキーマ (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 |
** これらの型は CLS 準拠ではありません。 対応するメソッドは XmlReader クラスにありません。
![]() |
---|
WriteValue を複数回連続して呼び出す場合、値をスペースで区切りません。スペースを挿入するには、複数回の WriteValue 呼び出しの間に WriteWhitespace を呼び出す必要があります。 |
XML データ ストアへの書き込み
XmlWriter を使用して、XML データ ストアへの書き込みを行うことができます。 たとえば、XPathNavigator クラスは XmlWriter オブジェクトを作成して、XmlDocument オブジェクト用のノードを作成できます。
データ ストアに使用可能なスキーマ情報がある場合、WriteValue 呼び出しが、許可されていない型に変換しようとすると、WriteValue メソッドは例外をスローします。
データ ストアに使用可能なスキーマ情報がない場合、WriteValue メソッドは、すべての値を xsd:anySimpleType 型として扱います。
例
書き出す前に、本の価格を 15% 値上げする例を次に示します。 スキーマ情報は、検証型の XmlReader オブジェクトであるリーダーから取得されます。
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();