任意のエンコーディングで XML ファイルをロードするには、次のコードを使用します。
Encoding encoding;
using (var reader = new XmlTextReader(filepath))
{
reader.MoveToContent();
encoding = reader.Encoding;
}
var settings = new XmlReaderSettings { NameTable = new NameTable() };
var xmlns = new XmlNamespaceManager(settings.NameTable);
var context = new XmlParserContext(null, xmlns, "", XmlSpace.Default,
encoding);
using (var reader = XmlReader.Create(filepath, settings, context))
{
return XElement.Load(reader);
}
これは機能しますが、ファイルを 2 回開くのは少し効率が悪いようです。私ができるようなエンコーディングを検出するより良い方法はありますか:
- ファイルを開く
- エンコーディングを検出する
- XML を XElement に読み込む
- ファイルを閉じる