1

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

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

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

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

但是,当我尝试使用相对 URI 时,出现异常:

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

我的程序集都位于与配置文件相同的目录中。这里有什么问题?

4

2 回答 2

2

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

于 2009-12-16T08:19:03.833 回答
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);
于 2013-11-05T19:14:49.260 回答