2010-12-11 62 views
1

everyone。我正在使用Mono 2.4,Ubuntu 10.10開發一個小型的ASP.NET Mvc項目。有一個對象數組,每個對象都對應一個特定的xml文件。用XmlTextReader讀取xmls。這不起作用,因爲xml文件具有罕見的「cp866nav」編碼,XmlTextReader不支持(「System.ArgumentException: Encoding name 'cp866nav' not supported」)。但是,如果在xml頭中編碼更改爲「cp866」,它會正常工作。我找到了一種解決方案,它包括用一個StreamReader初始化的XmlTextReader具有一定的編碼,而不是文件名,如下面的代碼:解析XML文件時的編碼問題

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

的是,它包含XML文件的目錄是隻讀的問題(我不能改變它),所以我得到 「System.UnauthorizedAccessException: Access to the path '' is denied.」。很奇怪,因爲用文件名初始化的XmlTextReader似乎讀取文件。

考慮到程序無法修改或創建文件,是否有解決方案?

回答

0

由於你的問題是與文件訪問而不是編碼,我建議嘗試打開文件作爲流yourslef與正確的標誌FileStream(名稱,FileMode.Open,FileAccess.Read),然後調用其他構造函數StreamReader,需要流。

(當你完成後,不要忘記處置流/讀者)。