使用相对URI作为XmlDataProvider的Source

时间:2009-06-29 19:04:52

标签: .net uri xmldataprovider

在.NET中的Source对象上设置XmlDataProvider属性时是否可以使用相对URI?我得到以下异常:

IOException:System.IO.IOException: Cannot locate resource 'configuration.xml'.

当我使用绝对URI设置Source属性时,一切都按预期工作:

provider.Source = new Uri(@"C:\bin\Configuration.xml", UriKind.Absolute);

但是,当我尝试使用相对URI时,我得到了异常:

provider.Source = new Uri(@"Configuration.xml", UriKind.Relative);

我的程序集都与配置文件位于同一目录中。这有什么不对?

2 个答案:

答案 0 :(得分:2)

试试这个: FileInfo file = new FileInfo(“configuration.xml”); provider.Source = new System.Uri(file.FullName);

答案 1 :(得分:0)

是的,以下内容解决了文档加载和使用相对源路径问题的问题。使用在xaml中定义的XmlDataProvider,将Source保留为空(也应该在代码中也可以):

<Window.Resources>
<XmlDataProvider 
    x:Name="myDP"
    x:Key="MyData"
    Source=""
    XPath="/RootElement/Element"
    IsAsynchronous="False"
    IsInitialLoadEnabled="True"                         
    debug:PresentationTraceSources.TraceLevel="High"  /> </Window.Resources>

一旦设置了源,数据提供程序就会自动加载文档。这是代码:

    m_DataProvider = this.FindResource("MyData") as XmlDataProvider;
    FileInfo file = new FileInfo("MyXmlFile.xml");

    m_DataProvider.Document = new XmlDocument();
    m_DataProvider.Source = new Uri(file.FullName);