Как прочитать файл ресурсов XML из моего пакета приложений в MonoTouch / MonoGame для iOS? - PullRequest
2 голосов
/ 16 мая 2011

Используя MonoTouch / MonoGame, я пытаюсь включить пользовательский XML-файл в свой комплект приложений для использования в моем коде, но я не знаю, как это сделать.Я включил файл XML в свой проект и пометил его как «Контент», чтобы его можно было скопировать в пакет приложения.

В этом случае я хочу загрузить некоторые данные карты в формате XML, который я определил (предписан формат XML, поэтому я не могу его изменить), сохранив при этом возможность запуска того же кода под XNA на ПК.Мне пока не очень повезло с поиском подходящего механизма на iOS.Я бы ожидал что-то вроде следующего, но mapPath выходит из строя нулевым (вероятно, я просто неправильно понимаю правильное использование API).

#if WINDOWS
Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyApp.Maps." + map + ".xml");
#else
string mapPath = NSBundle.MainBundle.PathForResource(map,"xml");
Stream s = new FileStream(mapPath, FileMode.Open, FileAccess.Read);
#endif 

Любые советы?

Ответы [ 3 ]

0 голосов
/ 29 сентября 2011

Я использую XDocument и Streams для чтения данных XML в различных приложениях. Как уже упоминалось, ключ гарантирует, что ваш файл помечен как «Содержимое».

0 голосов
/ 20 декабря 2011

Используйте TitleContainer.OpenStream, он кроссплатформенный.

Пример:

string xml = new System.IO.StreamReader(TitleContainer.OpenStream("MyApp.Maps." + map + ".xml")).ReadToEnd();
  • Обратите внимание, что вам нужно будет указать полный путь к папке, если ваш ресурс находится в подпапке.
0 голосов
/ 16 мая 2011

У меня есть файлы XML, помеченные как содержимое в моем проекте MT.Я загружаю их непосредственно в XDocument:

XDocument doc = XDocument.Load("states.xml");

Файл просто содержится в комплекте приложения, а не внедряется в исполняемый файл, как это было бы с традиционным ресурсом .NET.

...