Использование относительного URI в качестве источника XmlDataProvider - PullRequest
1 голос
/ 29 июня 2009

Можно ли использовать относительный URI при установке свойства Source для объекта XmlDataProvider в .NET? Я получаю следующее исключение:

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);

Все мои сборки находятся в том же каталоге, что и файл конфигурации. Что здесь не так?

Ответы [ 2 ]

2 голосов
/ 16 декабря 2009

Попробуйте это: FileInfo file = new FileInfo ("configuration.xml"); provider.Source = new System.Uri (file.FullName);

0 голосов
/ 05 ноября 2013

Да, следующее решает как загрузку документа, так и использование относительного пути к источнику. Используя XmlDataProvider, который определен в xaml, оставляя источник пустым (это должно быть возможно и в коде):

<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);
...