В настоящее время я работаю над приложением Windows Phone 7 для компании, в которой я работаю. Для части конфигурации я хотел бы поделиться конфигурацией, которая используется для нашего приложения iPhone и хранится на удаленном сервере в файле plist.
Я использую System.Xml.Linq.XDocument
- Parse
строку, которую я скачал с использованием экземпляра WebClient.
Это код:
Uri plistLocation = new
Uri(@"http://iphonevnreporter.vol.at/Settings.bundle/mw_test.plist");
WebClient client = new WebClient();
try
{
client.DownloadStringCompleted += ((sender,e) => {
if (e.Error == null)
{
XDocument xdoc = XDocument.Parse(e.Result);
//XElement element = XElement.Parse(e.Result.ToString());
var dictItems = xdoc.Descendants("dict");
foreach (XElement elem in dictItems)
{
}
}
});
}
catch (Exception e)
{
}
client.DownloadStringAsync(plistLocation);
В этом примере у plist просто есть элемент dict
под корневым элементом plist
, и тем не менее я получаю NotSupportedException
. Исключение происходит в XDocument.Parse(e.Result)
.
Это StackTrace:
at System.Xml.XmlTextReaderImpl.ParseDoctypeDecl()
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.Linq.XDeclaration..ctor(XmlReader r)
at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
at System.Xml.Linq.XDocument.Parse(String text, LoadOptions options)
at System.Xml.Linq.XDocument.Parse(String text)
at VorarlbergOnline.MainViewModel.<FillSections>b__10(
Object sender, DownloadStringCompletedEventArgs e)
at System.Net.WebClient.OnDownloadStringCompleted
(DownloadStringCompletedEventArgs e)
at System.Net.WebClient.DownloadStringOperationCompleted(Object arg)
at System.Threading.ThreadPool.WorkItem.WaitCallback_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext
executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadPool.WorkItem.doWork(Object o)
at System.Threading.Timer.ring()
Загрузка других файлов XML работает нормально, поэтому код выглядит нормально. Я проверил, может ли быть проблема с dtd, на который ссылаются, но он загружается нормально. Так что у меня сейчас немного идей.