Ajout d'un fichier XML existant
J'ai un fichier XML que je voudrais ajouter sans en changer le format. Fichier existant ressemble à ceci:
<Clients>
<User username="farstucker">
<UserID>1</UserID>
<DOB />
<FirstName>Steve</FirstName>
<LastName>Lawrence</LastName>
<Location>NYC</Location>
</User>
</Clients>
Comment puis-je ajouter un autre utilisateur à l'aide de ce format? Mon code est:
string fileLocation = "clients.xml";
XmlTextWriter writer;
if (!File.Exists(fileLocation))
{
writer = new XmlTextWriter(fileLocation, null);
writer.WriteStartDocument();
//Write the Root Element
writer.WriteStartElement("Clients");
//End Element and Close
writer.WriteEndElement();
writer.Close();
}
//Append new data here
Ive pensé à utiliser un XmlDocument Fragment pour ajouter les données, mais Im pas sûr si je peux maintenir le format actuel ( et des balises vides ) sans gâcher le fichier.
Quels conseils donneriez-vous est très apprécié.
MODIFIER Ive changé le code pour lire le XML d'origine, mais le fichier ne cesse de s'écraser.
N'utilisez pas de
new XmlTextWriter()
. Qui a été abandonné depuis .NET 2.0. Utilisation XmlWriter.Create()
à la place.OriginalL'auteur Ryan | 2010-04-15
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser la classe XmlDocument pour charger tout le fichier, le modifier de la mémoire et d'écrire du contenu de remplacer le fichier d'origine. Ne vous inquiétez pas, il ne sera pas gâcher votre balisage, et vous pouvez même demander à préserver, non significative, les espaces dans le document d'origine à l'aide de la
PreserveWhitespace
propriété (http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.preservewhitespace.aspx).Je crois que la plupart de la question ne précisent pas quelle est la version de .NET ils sont utilisant. LINQ n'existe pas dans la version 2.0 ou versions antérieures.
Désolé, Im en utilisant 3.5
OriginalL'auteur kicsit
Vous pouvez essayer quelque chose comme ça...
Qui devrait vous obtenir a commencé, il suffit de remplacer les variables avec tout ce que vous utilisez et n'oubliez pas d'ajouter le Système.Xml.Linq espace de noms.
Si vous continuez d'avoir des problèmes de post ici et ainsi vous aider à obtenir à travers elle.
OriginalL'auteur Leroy Jenkins
Si vous souhaitez utiliser la sérialisation (ce qui signifie que vous avez un objet de données souhaitez sérialiser en XML et de les ajouter à un fichier XML existant) vous pouvez utiliser cette méthode générique
SerializeAppend<T>
. C'est exactement ce dont vous avez besoin. J'ai aussi ajouté deux méthodes pour tous ceux qui peuvent bénéficierOriginalL'auteur user1892544