入力として Stream が与えられた場合、XML データ ソースに対して XPathNavigator を安全に作成するにはどうすればよいですか?
XML データ ソース:
- 削除する必要がある無効な 16 進数文字が含まれている可能性があります。
- ドキュメントの宣言されたエンコーディングと一致しない文字が含まれている可能性があります。
例として、クラウド内の一部の XML データ ソースではutf-8のエンコードが宣言されていますが、実際のエンコードはwindows-1252またはISO 8859-1であり、これに対して XmlReader を作成するときに無効な文字の例外がスローされる可能性があります。ストリーム。
StreamReader.CurrentEncodingプロパティのドキュメントから: 「現在のリーダーで使用されている現在の文字エンコーディング。値は、StreamReader の任意の Read メソッドへの最初の呼び出しの後で異なる場合があります。これは、エンコーディングの自動検出が Read メソッドへの最初の呼び出しまで行われないためです。 " これは、最初の読み取り後に CurrentEncoding を確認できることを示しているようですが、XML データを Stream に書き出す必要があるときに、このエンコーディングを格納するのに行き詰っていますか?
無効な文字の問題のエンコードを (できれば C# で) 適切に処理する XML データ ソースに対して XPathNavigator/IXPathNavigable インスタンスを安全に作成するためのベスト プラクティスを見つけたいと思っています。