SyDaze
Messages postés71Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 8 juin 2007
-
17 janv. 2006 à 09:59
SyDaze
Messages postés71Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 8 juin 2007
-
17 janv. 2006 à 10:33
Bonjour,
J'ai un problème que je n'arrive vraiment pas à m'expliquer:
J'ai memorisé un fichier XML dans un objet XmlDocument, je voudrai effectuer une operation pour effacer les "sous-noeuds" d'un noeud père, la structure du noeud est constituée comme cela:
<source1>
<!-- comment -->
1
<!-- comment -->
<name></name>
<!-- comment -->
<type>1</type>
</source1>
Donc le but est d'avoir pour resultat le noeud:
<source1>
</source1>
Voici mon code:
eNodeA = _xmlDoc.SelectSingleNode("//data//source1");
nodeChildList = eNodeA.ChildNodes;
foreach (XmlNode subNode in nodeChildList)
{
if ((subNode != null)
{
eNodeA.RemoveChild(subNode);
}
}
Voici ce qu'il se produit: la liste de sous-noeuds est bien chargée dans le nodeChildList (6 noeuds), mais lorsque la methode RemoveChild(subNode) est effectuée pour le premier sous-noeud, le programme sort directement de la boucle foreach sans pour autant soulever une exception. Avez vous deja rencontré ce problème? Comment le résoudre?
Merci.
SyDaze
Messages postés71Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 8 juin 2007 17 janv. 2006 à 10:33
J'ai trouvé, contrairement à VB6, l'objet nodeChildList est une référence sur les sous-noeud de eNodeA et non pas une copie de ces sous-noeuds, donc quand on modifie eNodeA, cela modifie égallement nodeChildList, d'ou le problème.
J'ai utilisé une boucle for et cela fonctionne.