Bonjour
J'ai un problème avec xpath que j'aimerai vous soumettre. Je copie une node enfant sous une node parent. En fonction de la condition suivante :
Si IDnodeParent = IDnodeEnfant => alors copier la node enfant sous la node parent.
Mon code :
Un phénomène que je ne comprend pas se passe, je met un point d'arrêt et je vérifie en parallèle dans mon document XML que chaque élément de ma liste reçoit bien sa copie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 string IDnodeEnfant = "1"; string xpathNodeToCopy = "/a:SL/a:Data/a:NodeEnfant[@id=\"" + IDnodeEnfant + "\"]"; nodeToClone = doc.SelectSingleNode(xpathNodeToCopy, xnsm); if (nodeToClone != null) { nodeToCopy = nodeToClone.Clone(); string xpathNodePlaceToCopy = "/a:SL/a:Sub/a:VolLevel/a:Bay/*/a:NodeParent[@lid=\"" + IDnodeEnfant + "\"]"; XmlNodeList nodeList = doc.SelectNodes(xpathNodePlaceToCopy, xnsm); if (nodeList != null) { for (int i = 0; i <= nodeList.Count; i++) { nodeList[i].AppendChild(nodeToCopy); doc.Save(sourceFile); } }
Premier élement la copie de l'enfant se fait je refresh mon document xml et je vois bien l'enfant qui a été copié.
Deuxième élément refresh du document xml, l'enfant à bien été copié MAIS l'enfant du premier élément de la liste a été supprimé.
Troisième élement refresh du document xml, l'enfant à bien été copié MAIS l'enfant du second élément de la liste a été supprimé.
etc...
Je ne comprend pas pourquoi à chaque itération 't' l'enfant copié dans l'itérération 't-1' est supprimé. D'autant plus que je fais bien à chaque fin d'itération un doc.save.
Merci d'avance pour votre aide.
Partager