Xml Supprimer un noeud

Zeuth Messages postés 1 Date d'inscription dimanche 7 août 2005 Statut Membre Dernière intervention 16 mars 2007 - 16 mars 2007 à 15:46
cs_Mouhtar Messages postés 17 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 1 juin 2013 - 29 mars 2011 à 15:06
Voila j'aimerai supprimer un noeud dans mon fichier xml


Fichier XML :




Users>
 
    Geogeo
 
 
    Alice
 


Mon code :


static void Main(string[] args)
        {
            XmlDocument Doc = new XmlDocument();
            Doc.Load("users.xml");


            XmlNode Root = Doc.DocumentElement;
            XmlNodeList Poup;
            XmlNode Bouh;


            Poup = Root.SelectNodes("/Users/User[Username='GeoGeo']");
            Bouh = Poup.Item(0);
            Bouh.RemoveAll();
         
          
            Doc.Save(Console.Out);
           
        }


Avec ce code j'arrive bien a supprimer GeoGeo mais il me reste


Comment faire pout tout enlever ?


Merci :)

5 réponses

ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
16 mars 2007 à 21:02
salut,

tu peux faire une truc dans le genre de bouh.parentNode.remove(poup)...je sais plus si c'est parentNode, parentElement, parent...

ShareVB
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
17 mars 2007 à 09:16
Salut,
La requête XPath est correcte, mais la méthode RemoveAll permet de supprimer les éléments, attributes, et childNode d'un Node, pas le Node lui même.
Donc forcément, l'élément User reste.

Si tu ne connais pas spécialement bien XPath, tu peux jeter un oeil ici

<hr />
-Blog-
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
17 mars 2007 à 09:23
Donc voici une solution rapidement faite (peut-être qu'on peut faire mieux ^^):
En tout cas elle marche...

XmlDocument xDoc =
new
XmlDocument();
xDoc.Load(
"test.xml");

XmlNode xNodeUser = xDoc.SelectSingleNode(
"Users/User[Username='GeoGeo']");

XmlNode xNodeUsers = xDoc.SelectSingleNode(
"Users");

if (xNodeUser !=
null && xNodeUsers !=
null) xNodeUsers.RemoveChild(xNodeUser);xDoc.Save(

"test.xml");

<hr />
-Blog-
0
ShareVB Messages postés 2676 Date d'inscription vendredi 28 juin 2002 Statut Membre Dernière intervention 13 janvier 2016 26
17 mars 2007 à 12:57
salut,

pas testé mais ca peut peut être aussi marché:
static void Main(string[] args)
        {
            XmlDocument Doc = new XmlDocument();
            Doc.Load("users.xml");

            XmlNode Root = Doc.DocumentElement;
            XmlNode Poup;

            Poup = Root.SelectSingleNode("/Users/User[Username='GeoGeo']");
            if (Poup != null && Poup.ParentNode != null) Poup.ParentNode.RemoveChild(Poup);
          
            Doc.Save(Console.Out);
           
        }

ShareVB
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Mouhtar Messages postés 17 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 1 juin 2013
29 mars 2011 à 15:06
salut
je voudrai supprimer mais appartir d'un attribut du noeud
voici mon ficheir xml

<comptes>
<compte numcompte="23456568" type="Epargne" nom="MARIA" prenom="ABDOURAHMANE" tel="777421504">10000000</compte>
<compte numcompte="09875439" type="Epargne" nom="AAAAAAAA" prenom="dddd" tel="ttttt">111111</compte>
<compte numcompte="1234567" type="Epargne" nom="FFF" prenom="cffd" tel="k,kjkj">4444444</compte>
<compte numcompte="0987665" type="Epargne" nom="daba" prenom="trtrtrt" tel="trtrtrt">333333333333</compte>
</comptes>




c'est ce que j'ai fait mai sa ne passe pas


doc.Load(@"compte2.xml");

string path = string.Format("compte[@numcompte={0}]",0987665);

XmlNode compt = doc.FirstChild.SelectSingleNode(path);
doc.RemoveChild(compt);
0
Rejoignez-nous