XML シリアル化に StringWriter を使用する
シリアル化はオブジェクト操作の重要な側面であり、C# 3 では、このプロセスを簡素化する代替手段を探すことが重要です。不可欠。注目を集めたオプションの 1 つは StringWriter クラスです。
StringWriter の利点
StringWriter は、オブジェクトをシリアル化する便利な方法を提供します。 StringWriter を使用すると、シリアル化されたオブジェクトを文字列として簡単に取得できるため、メモリ ストリームとエンコーディングを管理する必要がなくなります。さらに、StringWriter はシンプルであるため、魅力的な選択肢となっています。
エンコーディングに関する考慮事項
ただし、StringWriter には潜在的な問題があることに注意することが重要です。デフォルトでは、エンコードを指定することはできません。これにより、XML ドキュメントがエンコードを UTF-16 としてアドバタイズし、ファイル ストレージ用に UTF-16 としてエンコードする必要が生じる可能性があります。
この問題に対処するには、カスタム クラスを実装してエンコードを制御できます。
public sealed class StringWriterWithEncoding : StringWriter { public override Encoding Encoding { get; } public StringWriterWithEncoding (Encoding encoding) { Encoding = encoding; } }
または、UTF-8 エンコードで十分な場合は、特殊なクラスを使用できます。使用:
public sealed class Utf8StringWriter : StringWriter { public override Encoding Encoding => Encoding.UTF8; }
SQL Server の XML ストレージ
もう 1 つの懸念は、最初のコード例から生成された XML を SQL Server 2005 DB 列に格納できないことでした。 。エラーが発生しました:
XML 解析: 行 1、文字 38、
エンコーディングを切り替えることができません
は、XML ドキュメントのエンコーディングが予期されたエンコーディングと一致しなかったことを示します。
この問題を解決するには、エンコードを指定せずに XML を手動で挿入するか、UTF-16 エンコードを使用して保存します。ただし、StringWriter を使用すると、一貫したエンコーディングが保証されるため、この問題は解消されます。
以上がStringWriter は C# での XML シリアル化をどのように簡素化し、SQL Server ストレージのエンコーディングの問題に対処できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。