从具有非拉丁文件路径的文件加载XmlDocument

时间:2012-10-05 13:10:55

标签: c# .net

我已经实例化了XmlDocument,而不是尝试在文件pat中加载带有非拉丁符号的XML文件。在加载我面对的文件

期间
 ArgumentNullException 

带有消息:

"Value cannot be null. Parameter name: str"

Stack Trace是 -

at System.Security.Permissions.FileIOPermission.HasIllegalCharacters(String[] str)
at System.Security.Permissions.FileIOPermission.AddPathList(FileIOPermissionAccess access, AccessControlActions control, String[] pathListOrig, Boolean checkForDuplicates, Boolean needFullPath, Boolean copyPathList)
at System.Security.Permissions.FileIOPermission..ctor(FileIOPermissionAccess access, String path)
at System.Uri.ParseConfigFile(String file, IdnScopeFromConfig& idnStateConfig, IriParsingFromConfig& iriParsingConfig)
at System.Uri.GetConfig(UriIdnScope& idnScope, Boolean& iriParsing)
at System.Uri.InitializeUriConfig()
at System.Uri.InitializeUri(ParsingError err, UriKind uriKind, UriFormatException& e)
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Uri..ctor(String uriString, UriKind uriKind)
at System.Xml.XmlResolver.ResolveUri(Uri baseUri, String relativeUri)
at System.Xml.XmlUrlResolver.ResolveUri(Uri baseUri, String relativeUri)
at System.Xml.XmlTextReaderImpl..ctor(String url, XmlNameTable nt)
at System.Xml.XmlTextReader..ctor(String url, XmlNameTable nt)
at System.Xml.XmlDocument.Load(String filename)
at .... 

我的代码中有一部分:

var xmlData = new XmlDocument();
if (File.Exists(xmlPath))
{        
    xmlData.Load(xmlPath);
    ...
}

xmlPath包含法语字母。

有什么问题? 如何用非拉丁字符打开xml文件?

2 个答案:

答案 0 :(得分:0)

我找到了使用其他类进行数据加载的问题的解决方案,如下所示:

var d = File.ReadAllText(xmlPath);
xmlData.LoadXml(d);

但问题 - “出了什么问题?”仍然开放。

答案 1 :(得分:0)

首先将文件路径加载到uri:

Uri xmlUri = new Uri(xmlPath);
xmlData.Load(xmlUri.AbsolutePath);