XmlTextWriter.WriteChars メソッド
一度に 1 つのバッファにテキストを書き込みます。
Overrides Public Sub WriteChars( _
ByVal buffer() As Char, _ ByVal index As Integer, _ ByVal count As Integer _)
[C#]
public override void WriteChars(char[] buffer,intindex,intcount);
[C++]
public: void WriteChars(__wchar_tbuffer __gc[],intindex,intcount);
[JScript]
public override function WriteChars(
buffer : Char[],index : int,count : int);
パラメータ
- buffer
書き込むテキストを格納している文字配列。 - index
書き込むテキストの開始を示すバッファ内の位置。 - count
書き込む文字の数。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | buffer が null 参照 (Visual Basic では Nothing) です。 |
ArgumentException | バッファ長から index を差し引いた値が count 未満です。呼び出しにより、サロゲート ペア文字が分割されるか、無効なサロゲート ペアが書き込まれます。 |
ArgumentOutOfRangeException | index または count が 0 未満です。 |
InvalidOperationException | WriteState が Closed です。 |
解説
このメソッドを使用すると、一度に 1 つのバッファに大量のテキストを書き込むことができます。
WriteChars メソッドが複数のバッファへの書き込みでサロゲート ペア文字を分割しないようにするには、特殊な処理を実行する必要があります。XML 仕様では、サロゲート ペアの有効範囲を定義しています。
サロゲート ペア文字を書き込み、その文字がバッファ内で分割された場合は、例外がスローされます。継続して次のサロゲート ペア文字を出力バッファに書き込むには、この例外をキャッチする必要があります。
ランダムに生成されたサロゲート ペア文字が、出力バッファに書き込むときに分割される例を次に示します。例外をキャッチし、継続してバッファに書き込むことにより、サロゲート ペア文字は出力ストリームに正しく書き込まれます。
//Handling surrogate pair across buffer streams.
char [] charArray = new char[4];
char lowChar, highChar;
Random random = new Random();
lowChar = Convert.ToChar(random.Next(0xDC01, 0xDFFF));
highChar = Convert.ToChar(random.Next(0xD801, 0xDBFF));
XmlTextWriter tw = new XmlTextWriter("test.xml", null);
tw.WriteStartElement("Root");
charArray[0] = 'a';
charArray[1] = 'b';
charArray[2] = 'c';
charArray[3] = highChar;
try
{
tw. WriteChars(charArray, 0, charArray.Length);
}
catch (Exception ex) {
}
Array[0] = highChar;
Array[1] = lowChar;
charArray[2] = 'd';
tw.WriteChars(charArray, 0, 3);
tw.WriteEndElement();
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard