在.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);
我的程序集都与配置文件位于同一目录中。这有什么不对?
答案 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);