try
{ XmlDocument doc = new XmlDocument();
doc.Load("C:/net.xml");
XmlNodeList nodeList = doc.SelectNodes("//protocol");
foreach (XmlNode node in nodeList)
//namp.text => c le nom sasie dans le champ nom du protocol
node.Attributes["name"].Value = namp.Text;
foreach (XmlNode node in nodeList)
doc.Save("C:/net.xml");
MessageBox.Show("modification effectué");
}
catch (XmlException xmlEx)
{
Console.WriteLine("{0}", xmlEx.Message);
}
catch (Exception ex)
{
Console.WriteLine("{0}", ex.Message);
}
}
******
si c possible de me corriger le code pour que la modification se fait seulement sur lr protocol saisie,Merci
il y a quelques incohérences/oublis dans ton code :
- double foreach identiques,
- le 2ème foreach sauvegarde ton fichier (contenant tous tes noeuds) pour chaque noeud protocol rencontré (ça n'a pas de sens),
- tu veux modifier un protocole en particulier et tu nous indiques que le nouveau nom se trouve dans namp.Text, mais où se trouve l'ancien nom ? Sans celui-ci comment savoir quel noeud modifier en particulier ?
Ton code devrait ressembler à ça, en version aérée :
si le nom de protocole est unique, tu peux même rajouter un break dans le bloc if, pour que le parcours s'arrête. Par contre cela sous-entend que tu maintiens cette unicité, et donc que tu vérifies que la nouvelle valeur saisie n'existe pas déjà dans ton XML.