Como detectar melhor a codificação no arquivo XML?
Para carregar arquivos XML com codificação arbitrária, tenho o seguinte código:
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);
}
Isso funciona, mas parece um pouco ineficiente abrir o arquivo duas vezes. Existe uma maneira melhor de detectar a codificação para que eu possa fazer:
1. Open file
2. Detect encoding
3. Read XML into an XElement
4. Close file