Modifier fichier xml en c# [Résolu]

Signaler
Messages postés
15
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
22 janvier 2013
-
halimalili
Messages postés
15
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
22 janvier 2013
-
mon probléme c que la modification dans ma base xml se fait sur tous les balises et pas le protocol spcifier
Voici la structure:
*******


















*******
Voici mon code:
*******
private void modifier_Click(object sender, EventArgs e)
{

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

5 réponses

Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Salut,

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 :
[..]
string oldname = nampold.Text;
string newname = namp.Text;
foreach (XmlNode node in nodeList) {
string currentname = node.Attributes["name"].Value;
if (currentname == oldname) {
node.Attributes["name"].Value = newname;
// break;
}
}
doc.Save("C:/net.xml");


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.
Messages postés
15
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
22 janvier 2013

Merciiiiiiiii :))
ca marche bien maint
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
11
Je veux pas être tatillon, mais pourrais-tu mettre le topic comme "résolu" stp ? ^^
Messages postés
15
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
22 janvier 2013

hhh!! c bon :)
Messages postés
15
Date d'inscription
samedi 29 janvier 2011
Statut
Membre
Dernière intervention
22 janvier 2013

je veux trier mon fichier xml selon le 'name' du protocol;
voici sa structure, même structure que l'autre:
*********
<?xml version="1.0" encoding="utf-8"?> 
<netpdl> 
 
<format> 
</format> 

 
 
<format> 
</format> 

 
 
<format> 
</format> 

 
</netpdl> 

**********