次の方法で共有


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

参照

XmlTextWriter クラス | XmlTextWriter メンバ | System.Xml 名前空間