2010-11-18 3 views
4

Я «пытается», чтобы выяснить, как создать Phone 7 приложения для Windows, и я хотел бы обновить/сохранить файл XML с помощью следующей функции:сохранение в XML-документ

 XDocument xmlDoc = XDocument.Load("myApp.xml"); 

     xmlDoc.Element("ocd").Add(new XElement("vDetails", new XElement("itemName", this.tb_Name.Text), 
      new XElement("Date", System.DateTime.Now.ToString()), new XElement("itemValue", ""))); 

     xmlDoc.Save("data.xml"); 

Однако строка xmlDoc.Save дает ошибку: наилучшее перегруженное соответствие метода для «System.Xml.Linq.XDocument.Save (System.Xml.XmlWriter) имеет некоторые недопустимые аргументы.

Что мне нужно сделать для исправить это?

ответ

8

Необходимо сохранить в изолированном хранилище (или в нескольких других местах). Получить изолированное хранилище для вашего приложения, открыть поток в файл и сохранить в поток:

using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) 
{ 
    using (Stream stream = storage.CreateFile("data.xml")) 
    { 
     doc.Save(stream); 
    } 
} 
+0

Благодарим Вас за это. В этом примере я установил правильный путь ... Мне было интересно, хотя ... Когда я сохраняю файл, он сохраняется, когда я показываю обновленный файл. Однако при использовании хранилища Iso, если «приложение» закрыто, восстанавливается и восстанавливается обновленный .xml-файл? Я не могу понять, как это проверить? Какие-либо предложения? Возможно, мне нужно задать вопрос как вопрос. – webdad3

+0

@Jeff: Изолированное хранилище является постоянным. Вы можете думать об этом как о собственном личном диске вашего приложения. Если приложение будет удалено, а затем переустановлено, я подозреваю, что оно будет уничтожено. –

+0

@JonSkeet привет, так что вы объясняете это для сохранения xml-файла, но если я хочу прочитать тот же файл, используя эту логику? 'var xml = XDocument.Load (" arquivo.xml "). ToString(); содержания вара = новый StringContent ( XML, Encoding.GetEncoding ("ISO-8859-1"), "приложение/XML"); ' –

1

Блог разработчиков для Windows Phone идет модель исполнения переговоров приложений на большой глубине.

Я думаю, что важно различать «закрытие» приложения и приложение, находящееся в надгробном виде.

Application Closing is simply the outcome of the user pressing the hardware Back button enough times to navigate backwards through the pages of your application, past the application’s first page.

Application Deactivated occurs when a different application takes control of the foreground - for example, an incoming phone call, launching a chooser, or the user pressing the Windows button. In both cases, your application will be deactivated (not closed). Before we step into the subtleties of the Deactivated event, let’s make sure we all understand that upon Deactivation, your application gets terminated (at the end). It's that simple; your code can’t run in the background, therefore your application gets terminated. However, unlike an application that is closed, a deactivated application gets tombstoned. Don’t get confused, a tombstoned application’s process still gets terminated. But unlike a closed application, where the WP operating system removes any trace of the application, when an application is deactivated, the WP operating system stores a record (a tombstone) of the application's state. Basically, the WP operating system keeps a tombstone of the application that becomes part of the phone’s application back-stack, which is a journal that enables the use of the hardware Back button to enhance navigation functionality.

Application Execution Model

Что касается тестирования, идея может быть реорганизовать код и добавить протоколирование для различных точек события, как закрытие или быть захоронены и т.д.

Смежные вопросы