解析XML文件时编码问题

时间:2010-12-11 21:07:05

标签: c# asp.net xml encoding mono

大家。我正在使用Ubuntu 10.10的Mono 2.4开发一个小型ASP.NET Mvc项目。有一个对象数组,每个对象对应一个特定的xml文件。使用XmlTextReader执行xmls的读取。这不起作用,因为xml文件具有罕见的“cp866nav”编码,XmlTextReader(“System.ArgumentException: Encoding name 'cp866nav' not supported”)不支持该编码。但是如果xml标头中的编码更改为“cp866”,则它可以正常工作。我发现了一种解决方案,它包括使用具有特定编码而不是文件名的StreamReader初始化XmlTextReader,如下面的代码所示:

XmlTextReader reader = new XmlTextReader(new StreamReader(Server.MapPath(filename), Encoding.GetEncoding("cp866")));

问题是包含xml文件的目录是只读的(我无法更改),所以我得到了 “System.UnauthorizedAccessException: Access to the path '' is denied.”。相当奇怪,因为用文件名初始化的XmlTextReader似乎读取了文件。

是否有任何解决方案,考虑到程序无法修改或创建文件?

1 个答案:

答案 0 :(得分:0)

由于您的问题在于文件访问而不是编码,我建议尝试使用正确的标志FileStream(name,FileMode.Open,FileAccess.Read)以文件流的形式打开文件,然后调用其他构造函数StreamReader来获取Stream。

(完成后不要忘记配置流/阅读器。)