2009-08-27 5 views
-1

J'ai une application Windows Forms qui contiennent une zone de texte (tbox) et deux boutons: Save (b1) et Supprimer (b2) et un fichier XML leaf.xmlajouter le contenu à travers les zones de texte

Chaque fois que je mets quoi que ce soit dans le champ de saisie et puis cliquez sur Enregistrer (b1) le contenu de la zone de texte sera enregistré dans le fichier leaf.xml. Quand j'appuie sur delete (b2), il va supprimer du fichier leaf.xml et désactivera en même temps le bouton Enregistrer.

c'est le fichier xml wahatever ajouter viendra étiquette, supposons que si l'on ajoute test, il sera viendra comme

<Name>test</Name>

+3

Quelle est votre question? – rahul

+0

quelle est votre question? – Bhaskar

+0

Je ne pouvais pas commencer à penser à la réponse sans connaître la structure Xml, voulez-vous ajouter des nœuds, écraser le fichier entier, etc. etc – Colin

Répondre

4

Vous voulez probablement regarder le XMLSerializer. Il vous permettra de sérialiser/désérialiser votre "ObjectClass" vers/depuis un flux. De même, vous voulez probablement regarder la classe File, pour ouvrir des flux de fichiers (pour passer dans le XMLSerializer) et supprimer des fichiers (File.Delete).

-1

Le sauver devrait être quelque chose comme cela, les travaux de suppression avec XPath (trouver l'élément de nom qui a le texte fourni en elle, puis supprimez-le, enregistrez le fichier à nouveau.)

Cela ne fonctionnera pas si personne avec le même nom est inscrit hors cours ...

Save_Click(object sender, EventArgs e) 
{ 
    FileStream fs = new FileStream("leaf.xml",FileMode.Open,FileAccess.Read, FileShare.ReadWrite); 
    XmlDocument doc = new XmlDocument(); 
    doc.Load(fs); 
    XmlElement elem = doc.CreateElement("","Name",""); 
    XmlText text = doc.CreateTextNode(textbox1.Text); 
    elem.AppendChild(text); 
    doc.RootNode.AppendChild(elem); 

    doc.Save("leaf.xml"); 
} 
+0

Désolé ... Personne ne devrait jamais utiliser le XmlDocument pour ce type de travail à moins de travailler sur du code existant. Il y a tellement d'autres façons de le faire, et le XmlDocument est le pire pour de nombreuses raisons. Au moins utiliser le XDocument à la place du XmlDocument ... –

+0

Je suis d'accord, c'est quelque chose que j'ai écrit pour pointer l'OP dans une direction. Il est clairement nouveau à ce ... – Colin

+0

je reçois cette erreur 'System.Xml.XmlDocument' ne contient pas une définition de 'RootNode' – peter

0

Utilisez LINQ pour le faire .... voir le code ci-dessous:

XDocument xmlDoc = XDocument.Load(Server.MapPath("People.xml")); 

xmlDoc.Element("Persons").Add(new XElement("Person", new XElement("Name", txtName.Text), 
new XElement("City", txtCity.Text), new XElement("Age", txtAge.Text))); 

xmlDoc.Save(Server.MapPath("People.xml")); 
lblStatus.Text = "Data successfully added to XML file."; 
Questions connexes