首页 > 解决方案 > 在 XmlReader .NET 4.0 中加载失败目录文件

问题描述

这个文件名的字符是 (0xE700)。

当我在 XmlReader 中阅读时,我无法阅读它,因为文件名加载更改字符是 %EE%9C%80

XmlReader reader = XmlReader.Create(fileName, settings);

为什么  (0xE700) => %EE%9C%80!

标签: c#xml.net-4.0xmlreader

解决方案


它发生是因为XmlReader.Create将第一个参数视为 Uri。这并不明显,但您可以从方法签名中获取

XmlReader Create(string inputUri, XmlReaderSettings settings, XmlParserContext inputContext);

0xE700 是一个特殊字符,不能在 Uri 中使用,转义为%EE%9C%80!

FileStream但是,您可以使用例如更改代码并读取文件内容

var fileName = string.Format("{0}test.xml", char.ConvertFromUtf32(0xE700));
File.WriteAllText(fileName, "<root><node /></root>");
using (var fileStream = new FileStream(fileName, FileMode.Open))
{
    using (var reader = XmlReader.Create(fileStream))
        reader.ReadStartElement();
}

new FileStream(fileName, FileMode.Open)将按名称读取文件,并且不会对文件名进行编码(如 XmlReader.Create 所做的那样)。


推荐阅读