2010-02-10 8 views
0

J'ai besoin de lire, éditer et enregistrer un fichier xml. En d'autres termes, je veux écrire à nouveau sur le même fichier et ne pas créer un nouveau fichier XML. La lecture et l'édition des pièces fonctionnent, mais pas la sauvegarde.Écrire un fichier xml sur iPhone (Linq = to = Xml et MonoTouch)?

Le code Linq à Xml pour l'économie est tout simplement:

doc.Save(this.Path); 

Ce fonctionne dans iPhone Simulator mais lancers francs System.UnauthorizedAccessException sur l'appareil. Le fichier xml est décoré en tant que "contenu" dans MonoDevelop.

Toute aide appréciée.

/pom

+1

Où vous essayez d'enregistrer le fichier? –

+0

Je l'enregistre dans la zone "Ressources". – Pompair

Répondre

6

Vous devez enregistrer le fichier dans l'un des endroits que vous avez des droits d'écriture sur:

Le répertoire/document peut être récupéré à l'aide: documents var = Environment.GetFolderPath (Environment.SpecialFolder.Personal);

Notre "Comment faire pour stocker des fichiers" page contient plus de détails:

http://wiki.monotouch.net/HowTo/Files/HowTo:_Store_Files

0

Vous ne sont autorisés à enregistrer dans le répertoire de documents de votre application. Vous pouvez l'obtenir comme ceci:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 

Quelle est la valeur de this.Path?

+0

Merci, c'est probablement ce dont j'ai besoin. Cependant, j'ai maintenant besoin de comprendre comment appeler cette fonction dans MonoTouch. La valeur de this.Path correspond au nom du fichier XML. J'utilise la même valeur pour charger le fichier xml, et cela fonctionne. – Pompair

+1

Après un peu de googling trouvé référence à System.Environment.SpecialFolder.MyDocuments et en essayant de le voir comme ceci: chaîne docpath = System.Environment.SpecialFolder.MyDocuments.ToString(). Replace ("Personnel", "Documents") chaîne mypath = System.IO.Path.Combine (docpath, this.Path); doc.Save (mypath); valeur de monchemin est Documents/myxml.xml Toutefois, cela ne fonctionne pas non plus, il jette « System.IO.IsolatedStorage.IsolatedStorageException: Impossible de trouver une partie du chemin » – Pompair

+0

Voir ce (très complet) répondre ici: http://stackoverflow.com/questions/1829954/write-to-a-file-in-monotouch – Don

0
var documents = Environment.GetFolderPath (Environment.SpecialFolder.Personal); 
var document = Directory.GetFiles(documents);