StringWriter を使用した XML シリアル化: 代替アプローチ
オブジェクトを XML 文字列にシリアル化する場合、開発者は多くの場合、次のようなデフォルトのメカニズムに依存します。 MemoryStream と XmlTextWriter。ただし、別の方法では、より合理化されたアプローチのために StringWriter を使用します。
StringWriter の使用
StringWriter クラスは、テキスト コンテンツを文字列に書き込む便利な方法を提供します。次のコードで MemoryStream を StringWriter に置き換えることで、シリアル化された XML を文字列に簡単に書き込むことができます。
XmlSerializer ser = new XmlSerializer(typeof(MyObject)); StringWriter writer = new StringWriter(); ser.Serialize(writer, myObject); string serializedValue = writer.ToString();
StringWriter の利点
エンコーディングに関する考慮事項
デフォルトでは、StringWriter はデフォルトのシステム エンコーディングを使用します。これは UTF-16 とは異なる場合があります。 XML ドキュメントの予期されるエンコーディング。 UTF-16 との互換性を確保するには、StringWriterWithEncoding や Utf8StringWriter などのカスタム クラスを使用して、目的のエンコーディングを明示的に設定できます。
public sealed class StringWriterWithEncoding : StringWriter { public override Encoding Encoding { get; } public StringWriterWithEncoding(Encoding encoding) { Encoding = encoding; } } public sealed class Utf8StringWriter : StringWriter { public override Encoding Encoding => Encoding.UTF8; }
データベース ストレージ
発生した問題XML を SQL Server に保存するときは、エンコーディングに関連する可能性があります。 XML 文字列がすでに UTF-16 としてエンコードされている場合は、XML 宣言でエンコードを手動で設定する必要はありません。ただし、文字列が UTF-16 としてエンコードされていない場合は、適切な保存を確保するためにエンコードを手動で UTF-16 に設定する必要がある場合があります。
以上がC# での XML シリアル化には、MemoryStream の代わりに StringWriter が適していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。