Я пытаюсь понять, как перенести некоторый код .Net, который анализировал файл xml, в WinRT. До сих пор с помощью учитывая, что System.Uri не может быть преобразован в Windows.Foundation.Uri, у меня есть приведенный ниже код. Тем не менее, я застреваю сразу после создания Uri:
static readonly Uri ResourcesBase = new Uri(@"ms-resource://MyAssembly/");
public override async void Load()
{
Uri uri = new Uri(ResourcesBase, filePath); // filePath = "Data//world.xml";
XmlLoadSettings settings = new XmlLoadSettings() { ValidateOnParse = false };
XmlDocument xmlDoc = await XmlDocument.LoadFromUriAsync(uri, settings);
foreach (IXmlNode xmlNode in xmlDoc.ChildNodes)
{
ProcessNode(xmlNode);
}
}
Я получаю необработанное исключение, когда пытаюсь вызвать XmlDocument.LoadFromUriAsyn(uri):
Код пользователя не обработал ArgumentException — значение не попадает в ожидаемый диапазон.
Кому-нибудь еще кажется, что с WinRT все в 10 раз сложнее?
РЕДАКТИРОВАТЬ:
Я пробовал все следующие строки и получаю ту же ошибку:
Uri uri = new Uri("ms-resource://MyAssembly//" + filePath);
Uri uri = new Uri("ms-resource://MyAssembly/" + filePath);
Uri uri = new Uri("d:\\projects\\crystal\\" + filePath); // A valid absolute path
Настройка проекта:
Проект
- Характеристики
- использованная литература
- Ресурсы
- Data
- world.xml
- Исходный код...
В коде:
filePath = "Data\\world.xml";
Я также попытался поместить файл xml в каталог asset\data и просто активы. Ничто, кажется, не имеет значения.
Другое дело, что для действия сборки xml установлено значение «Содержимое». Это правильно? Единственное, что я мог себе представить, это «Встроенный ресурс», но я сомневаюсь в этом.
Полная информация об исключении:
System.ArgumentException не было обработано пользовательским кодом
HРезультат=-2147024809
Сообщение=Значение не попадает в ожидаемый диапазон.
Источник = Windows.Data.Xml.Dom
Трассировки стека:
в Windows.Data.Xml.Dom.XmlDocument.LoadFromUriAsync (Uri uri, XmlLoadSettings loadSettings)
в Crystal.IO.File.XmlFileSerializer.d__1.MoveNext() в d:\Projects\Crystal\library\IO\File\XmlFileSerializer.cs:строка 32
Внутреннее исключение:
Загрузите наименьший пример, чтобы воспроизвести проблему: test_xml.zip
Uri uri = new Uri("ms-resource://MyAssembly/" + filePath);
. - person Damir Arh   schedule 04.03.2012filePath
? - person user7116   schedule 05.03.2012