要加载具有任意编码的 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);
}
这可行,但是两次打开文件似乎效率低下。有没有更好的方法来检测编码,这样我就可以做到:
- 打开文件
- 检测编码
- 将 XML 读入 XElement
- 关闭文件