2010-01-15 6 views
1

Est-il possible en C# d'ajouter un XElement à un fichier xml déjà existant, sans sauvegarder le xml entier, mais seulement le nouvel élément?Ajout d'une XElement à un fichier XML sans enregistrer le fichier entier. C#

Donc, je ne veux pas quelque chose comme ça, car il va écrire tout le XML sur le disque.

XDocument document = new XDocument(); 
document.Load("filename"); 
document.Root.add(new XElement("name", "content")); 
document.save("filename"); 

merci d'avance.

+0

Exactement ce que vous voulez économiser? – Welbog

+0

Je voudrais ajouter le XElement au fichier xml. Juste comme Jason Williams a écrit dans le post suivant :) –

Répondre

2

Oui, mais seulement en obtenant un niveau un peu plus bas que dans votre exemple.

Dans un fichier XML, vous ne pouvez avoir qu'un seul élément racine, donc si vous ajoutez simplement au fichier pour ajouter un nouvel élément, vous allez créer un fichier XML rompu.

Cependant, vous pouvez lire depuis la fin du fichier et l'analyser pour trouver le début de la balise de fin de l'élément racine (ce qui vous donnerait un fichier Position). Ensuite, vous pouvez ouvrir le fichier en tant que FileStream pour l'écriture, définir la position d'écriture au début de la balise racine-fin, puis écrire votre nouvel élément dans le flux comme d'habitude. Ensuite, vous devrez compléter le fichier "manuellement" en ajoutant du texte pour ajouter une nouvelle racine-fin-tag.

+0

Je vois, donc c'est la seule façon de faire ce que je demande? il n'y a pas un plus simple (1 appel magique) pour le faire? –

+0

Pas si vous voulez éviter de réécrire le fichier entier. (Il est possible qu'il y ait une chose bizarre .net quelque part qui pourrait vous permettre de faire quelque chose comme ça, mais très improbable) –

Questions connexes