cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 29 oct. 2006 à 21:44
Pour faire un Clone, y'a toujours les méthodes Clone et CloneNode, je ne sais pas exactement si ça peut faire ce dont tu as besoin.
Sinon, tu seras effectivement obligé d'écrire une méthode du genre RenameNode que tu as posté ci-dessus.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 29 oct. 2006 à 20:40
Salut,
Je ne pense pas que ça puisse se faire directement (je ne suis pas tout à faire sûr).
Le cas échéant, il faut supprimer le Node et en recréer un avec le bon nom.
dyca370370
Messages postés5Date d'inscriptionvendredi 13 octobre 2006StatutMembreDernière intervention21 mai 2007 4 déc. 2006 à 15:55
J'arrive après la bataille, mais j'utilise un bout de code ci-dessous qui me permet de modifier d'un coup tous les éléments qui ont un attribut "id" avec une fonction (nouvelId) qui me retourne un code alpha aléatoire.
Il suffit de remplacer mon xPath (.//@id) par un qui va bien.
Espérant que ça serve à qq'un...
Dyca
XmlNodeList listeId = noeudXml.SelectNodes(".//@id");
//renommage des attributs id
foreach (XmlNode n in listeId) n.Value = nouvelId(unchecked((int)DateTime.Now.Ticks));
cs_mathmax
Messages postés403Date d'inscriptionvendredi 28 octobre 2005StatutMembreDernière intervention31 août 2008 4 déc. 2006 à 16:10
Merci dyca370370, mais là tu modifie la valeur des noeuds (qui dans ton cas sont d'ailleurs des attributs) alors que je voulais modifier le nom des balises. Ma fonction là haut marche bien, par contre je doute qu'elle soit rapide...
dyca370370
Messages postés5Date d'inscriptionvendredi 13 octobre 2006StatutMembreDernière intervention21 mai 2007 4 déc. 2006 à 17:01
Tu as entièrement raison, mais là où je dis n.value, il faut dire n.Name.
Et ma chaine xPath doit être qqchose comme ".//TOTO" pour remplacer les balises TOTO qui sont en dessous du noeud de référence.
Bonne soirée
Dyca