2010-11-18 22 views
4

Je suis « essayer » pour savoir comment créer un Windows Phone 7 applications et je voudrais mettre à jour/enregistrer un fichier xml avec la fonction suivante:sauver le document 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"); 

Cependant, la ligne xmlDoc.Save donne une erreur: La meilleure méthode surchargée pour "System.Xml.Linq.XDocument.Save (System.Xml.XmlWriter) a des arguments non valides."

Que dois-je faire pour corriger cela?

Répondre

8

Vous devez enregistrer dans un stockage isolé (ou quelques autres endroits). Obtenez le stockage isolé pour votre application, ouvrez un flux dans un fichier, puis enregistrez au flux:

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

Merci pour cela. Cet exemple m'a indiqué le chemin correct ... Je me demandais quand même ... Quand je sauve le dossier il semble enregistrer quand je montre le dossier mis à jour. Cependant, avec l'utilisation du stockage Iso si l'application est fermée, le fichier .xml nouvellement mis à jour est-il sauvegardé et restauré? Je n'arrive pas à comprendre comment tester ça? Aucune suggestion? Peut-être que je dois poser cette question. – webdad3

+0

@Jeff: Le stockage isolé est persistant. Vous pouvez le considérer comme le disque privé de votre application. Si l'application est désinstallée puis réinstallée, je pense qu'elle sera effacée. –

+0

@JonSkeet salut, de sorte que vous expliquer est pour l'enregistrement du fichier xml, mais si je veux lire ce même fichier en utilisant cette logique? 'var xml = XDocument.Load (" arquivo.xml "). ToString(); contenu var = new StringContent ( xml, Encoding.GetEncoding ("ISO-8859-1"), "application/xml"); ' –

1

Le blog des développeurs de Windows Phone va application parle modèle d'exécution en profondeur.

Je pense qu'il est important de faire la distinction entre l'application 'closing' et une application en cours de désactivation.

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

En ce qui concerne les essais, une idée peut-être à factoriser le code et ajouter la journalisation pour différents points d'événements comme la fermeture ou être désactivés, etc.